![](/img/trans.png)
[英]Hibernate - OneToMany UniDirectional Mapping - SQLGrammarException
[英]Mapping a OneToMany unidirectional relationship
以這些表為例,每個person
可以有多個address
。
CREATE TABLE person (
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE address (
id INTEGER NOT NULL PRIMARY KEY,
address VARCHAR(100) NOT NULL,
city VARCHAR(100) NOT NULL,
person_id INTEGER NOT NULL
);
我想將這些表映射到JPA實體,但是我不想使用mappedBy
映射它們之間的雙向關系。
在Person
和Address
之間映射OneToMany
單向關系的正確方法是什么? 考慮Person
必須知道其Address
es,但該Address
必須不知道其所屬的Person
。
您可以使用“個人實體”中的注釋JoinColumn和ManyToOne進行注釋。
@OneToMany(cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name = "person_pkey")
public List<Address> getAddresses() {
return addresses;
}
您無需使其雙向。 您只需將@OneToMany
批注放置在Person
集合類型的字段上,然后指定address
表的JoinColumn
。
請參見此處的示例3。我認為這就是您想要的。
因此,您將獲得類似以下內容的信息:
// In Person class:
@OneToMany
@JoinColumn(name="person_id")
public Set<Address> getAddresses() {return addresses;}
沒有mappedBy
屬性,沒有雙向映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.