У меня есть база данных с отношением PERSON
- ADDRESS
- ADDRESS_TYPE
, поддерживаемым таблицей тройного соединения PERSON_ADDRESS
. Соотношение PERSON
- ADDRESS
эффективно одно-ко-многим.
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
По практическим соображениям я хочу, чтобы мой объект PERSON
закончил:
public class Person {
private Address homeAddress; // Insertable/updateable by ADDRESS_TYPE_ID=1
private Address officeAddress; // Insertable/updateable by ADDRESS_TYPE_ID=2
}
Возможно ли это с аннотациями JPA 2.0?
Я прочитал главу "Ключи столбцов карты" JPA wikibook, и мне кажется, что я должен использовать @MapKeyJoinColumn
, но мне не совсем понятно, как успешно использовать его в этой ситуации. Я ожидал увидеть пример @JoinColumn
вдоль него, но он отсутствует в фрагментах кода в wikibook.
Если это невозможно с помощью @MapKeyJoinColumn
, тогда альтернативный подход с помощью @MapKeyClass
на Map<AddressType, Address>
также приветствуем, пока я могу получить getHomeAddress()
и getOfficeAddress()
в объекте PERSON
.