トリプル結合テーブルによって維持されるリレーションシップをPERSON
持つデータベースがここにあります。-関係は事実上 1対多です。ADDRESS
ADDRESS_TYPE
PERSON_ADDRESS
PERSON
ADDRESS
PERSON
ID ファーストネーム ラストネーム -- ---------- -------- 1 ジョン・ドウ 2 ジェーン・ドウ
ADDRESS
IDストリートシティ -- -------------------- ------------- 1 ホームストリート 1 故郷 2 オフィス街 1 オフィス街 3 メインストリート 1 メインタウン 4 ビジネスビル 1 ビジネスタウン
ADDRESS_TYPE
識別名 -- --------------- 1 自宅住所 2 事務所住所
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 の Map Key Columns の章を読みましたが、を使用する必要があるようですが@MapKeyJoinColumn
、この状況でそれをうまく使用する方法が完全にはわかりません。それに沿った例を期待して@JoinColumn
いましたが、wikibook のコード スニペットにはありません。
でそれが不可能な場合は、エンティティ内でandで終わることができる限り、多分on a の@MapKeyJoinColumn
助けを借りた代替アプローチも歓迎します。@MapKeyClass
Map<AddressType, Address>
getHomeAddress()
getOfficeAddress()
Person