-1

以这些表为例,每个表都person可以有多个addresses。

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单向关系的正确方法是什么?考虑到必须知道他们的es,但必须不知道它所属的。PersonAddressPersonAddressAddressPerson

4

2 回答 2

1

您可以使用 Person Entity 中的注释 JoinColumn 和 ManyToOne 来完成。

    @OneToMany(cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name = "person_pkey")
public List<Address> getAddresses() {
    return addresses;
}
于 2013-11-08T17:35:55.993 回答
0

你不需要让它成为双向的。您可以简单地将@OneToMany注释放在您的集合类型字段中Person并指定表JoinColumn的。address

请参阅此处,示例 3。我认为这就是您要寻找的。

所以你会有类似的东西:

// In Person class:

@OneToMany
@JoinColumn(name="person_id")
public Set<Address> getAddresses() {return addresses;}

没有mappedBy属性,没有双向映射。

于 2013-11-08T17:35:18.533 回答