映射OneToMany单向关系

时间:2013-11-08 17:24:46

标签: java jpa

以这些表为例,每个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映射它们之间的双向关系。

OneToManyPerson之间映射Address单向关系的正确方法是什么?考虑到Person必须知道他们的Address es,但Address必须不知道它属于Person

2 个答案:

答案 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属性,没有双向映射。