繁体   English   中英

映射一对多单向关系

[英]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映射它们之间的双向关系。

PersonAddress之间映射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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM