![](/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.