Ich habe hier eine Datenbank mit einer PERSON
- ADDRESS
-ADDRESS_TYPE
Beziehung durch eine dreifache gehaltene Tisch sitzt PERSON_ADDRESS
. Die PERSON
- ADDRESS
Beziehung ist effektiv eins zu viele.definieren mehrere Eigenschaften Adresse in Person pro Address durch eine Tabelle triple beitreten
PERSON
ID FIRSTNAME LASTNAME -- --------- -------- 1 John Doe 2 Jane Doe
ADDRESS
ID STREET CITY -- -------------------- ------------- 1 Home Street 1 Hometown 2 Office Street 1 Officetown 3 Main Street 1 Maintown 4 Business Building 1 Businesstown
ADDRESS_TYPE
ID NAME -- --------------- 1 Home Address 2 Office Address
PERSON_ADDRESS
PERSON_ID ADDRESS_TYPE_ID ADDRESS_ID --------- --------------- ---------- 1 1 1 1 2 2 2 1 3 2 2 4
Aus praktischen Gründen würde Ich mag meine Person
Einheit haben, um am Ende wie:
public class Person {
private Address homeAddress; // Insertable/updateable by ADDRESS_TYPE_ID=1
private Address officeAddress; // Insertable/updateable by ADDRESS_TYPE_ID=2
}
Ist das überhaupt möglich mit JPA 2.0 Anmerkungen?
Ich habe die Map Key Columns chapter of the JPA wikibook gelesen und es scheint, dass ich eine @MapKeyJoinColumn
verwenden muss, aber es ist mir nicht ganz klar, wie man es in dieser Situation erfolgreich verwendet. Ich habe erwartet, ein Beispiel zu sehen, aber es ist nicht in den Code-Schnipsel im Wikibook.
Wenn das nicht möglich ist, mit @MapKeyJoinColumn
, dann einem alternativen Ansatz mit Hilfe von vielleicht @MapKeyClass
auf einem Map<AddressType, Address>
ist auch willkommen, solange ich mit einem getHomeAddress()
und getOfficeAddress()
in der Person
Einheit kann am Ende.
Verwenden Sie eine Enum für ADDRESS_TYPE? Weil das sinnvoll wäre, da Sie feste Adressentypen zur Kompilierung haben wollen. – Bozho
@Bozho: Ich habe es noch nicht vollständig implementiert, aber wenn es möglich ist, würde die Verwendung eines '@ Enumerated' definitiv meine Präferenz haben, ja. – BalusC
aha. Und was ist dein Ausdaueranbieter? (Providerspezifische Anmerkungen sind als letzter Ausweg erlaubt, denke ich) – Bozho