Member
、およびの 3 つのテーブルがAddress
ありMem_Addr
ます。
エンティティはテーブルによってマップ/接続されMember
ます。多対多。Address
Mem_Addr
と の次のエンティティがMember
ありAddress
ます。
@Entity
@Table (name="Member")
public class Member{
@Id //....
private Integer mem_id;
@OneToOne
@JoinTable (name = "Mem_Addr",
joinColumns = @JoinColumn(name = "addr_id"),
inverseJoinColumns = @JoinColumn(name = "mem_id"))
Set<Address> addresses = new HashSet<Address>;
...
}
Mem_Addr
テーブル (エンティティが関連付けられていません)。
addr_id // (PK) Sequence
mem_id // (FK to mem_id in Member table)
....
....
Address
実在物。
@Entity
@Table(name="Address")
public class Address {
private String addr_id; // Foreign Key to addr_id in Mem_addr table
private String address1;
...
}
Address
テーブル/エンティティに ID がありません。(デザインについては聞かないでください。今は変更できません。)
そのため、メンバーをロードするときに、そのメンバーのすべての住所の場所をロードしたいと考えています。
解決策は何ですか?
編集:詳細...
基本的に、一部Member
の はテーブルに新しいエントリを持ちMem_Addr
ます。テーブルの各エントリに対して、Mem_addr
テーブルにエントリがありAddress
ます。
メンバーのアドレスを取得するには、Mem_Addr を参照する必要があります。Mem_Addr はaddr_id
プライマリとして、Address はaddr_id
外部キーとして持ちます。