我有三個表,Member
,Address
和Mem_Addr
。 Member
和Address
實體通過Mem_Addr
表映射/連接。多對多。休眠映射 - 連接表沒有@Id
我爲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
作爲主鍵,地址具有addr_id
作爲外鍵。
Address實體中是否存在addr_id,因爲我在Mem實體中看到您正在調用它? – Rika 2014-09-24 20:03:13
@Rika你是對的..我打錯了。糾正。 – 2014-09-24 20:05:31
我想你可能可以連接沒有Ids,但它必須有Embeddable註釋,請看這裏http://stackoverflow.com/questions/767277/hibernate-and-no-pk – Rika 2014-09-24 20:13:42