我希望我可以清楚地解釋這第一次嘗試。所以我有兩個實體:人員和地址。一個人可以有很多地址,所以我的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