我有三个表,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