簡體   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