以这些表为例,每个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
映射它们之间的双向关系。
在OneToMany
和Person
之间映射Address
单向关系的正确方法是什么?考虑到Person
必须知道他们的Address
es,但Address
必须不知道它属于Person
。
答案 0 :(得分:1)
您可以在Person Entity中使用注释JoinColumn和ManyToOne来完成。
@OneToMany(cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name = "person_pkey")
public List<Address> getAddresses() {
return addresses;
}
答案 1 :(得分:0)
您不需要将其设为双向。您只需将@OneToMany
注释放在Person
中的集合类型字段上,然后指定JoinColumn
表的address
。
见here,例3.我认为这就是你要找的东西。
所以你会有类似的东西:
// In Person class:
@OneToMany
@JoinColumn(name="person_id")
public Set<Address> getAddresses() {return addresses;}
没有mappedBy
属性,没有双向映射。