Определение нескольких свойств адреса в Person per AddressType с помощью таблицы тройного соединения

У меня есть база данных с отношениями 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

По практическим соображениям I ' хочу, чтобы моя сущность 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 , и мне кажется, что мне нужно использовать @MapKeyJoinColumn , но мне не совсем понятно, как его успешно использовать в этой ситуации. Я ожидал увидеть в нем пример @JoinColumn , но он отсутствует во фрагментах кода в викибуке.

Если это невозможно с @MapKeyJoinColumn , тогда альтернативный подход с помощью, возможно, @MapKeyClass на Map также приветствуется, если я могу получить getHomeAddress () и getOfficeAddress () в сущности Person .

12
задан BalusC 3 July 2014 в 05:28
поделиться