我希望我可以清楚地解释这第一次尝试。所以我有两个实体:人员和地址。一个人可以有很多地址,所以我的Person实体由一个地址列表组成。请注意,地址可以在不同的人之间共享,但是我的Address实体不需要对Person实体的引用。此外,每个地址实体将具有排名属性。JPA - @OneToMany与JoinTable
我的表结构如下:
PERSON (
person_id,
etc,
primary key (person_id)
)
ADDRESS (
address_id,
etc,
primary key (address_id)
)
PERSON_ADDRESS_MAP (
person_id,
address_id,
rank,
foreign key (person_id) references person (person_id),
foreign key (address_id) references address (address_id),
primary key (person_id, address_id, rank)
)
鉴于上述情况,我不知道如何注释我的人的地址列表,或在地址秩属性。我怀疑的人将如下所示:
@Entity
public class Person {
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name="person_address_map", [email protected](name="person_id"), [email protected](name="address_id"))
private List<Address> addresses;
...
}
我在如何注释排名在地址实体无能。
在此先感谢
正文说排名在Address中,但在表格描述中说它在PERSON_ADDRESS_MAP中。哪一个是真的? –
两者都是如此。 Rank是Address实体的一个属性,但它存储在连接表中,因为一个人的一个地址可能与另一个人的地址不同。例如,鲍勃将地址'A'作为他的第一个地址,但玛丽(住在同一地址)将她的第二个地址评为'A'。 – user1491636