簡體   English   中英

如何在非主鍵上使用休眠注釋設置單向一對一關系?

[英]how to set unidirectional one-to-one relationship using hibernate annotation on a non-primary key?

我已經設置了單向一對一映射表。 這是其實現的簡化版本。

// part of parent table called "Person"
@Id
@Column(name="id")
private String id;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="id", referencedColumnName = "person_id")
private PersonDetails details;

接着...

// part of child table called "PersonDetails"
@Id
@Column(name="id")
private String Id;

@Column(name="person_id")
private String personId;

這似乎不起作用,因為當我真正想要的是“ Person.Id = PersonDetails.personId”時,hibernate sql日志顯示hibernate試圖對“ Person.Id = PersonDetails.Id”上的Person和PersonDetails進行聯接。

我怎樣才能做到這一點?

我認為您應該將擁有方移到PersonDetails中,並將相反方移到Person中。 這將意味着使用雙向關聯,但是我已經在之前的項目之一中成功使用了這種模式:

人:

// part of parent table called "Person"
@Id
@Column(name="id")
private String id;

@OneToOne(mappedBy="person", cascade = CascadeType.ALL)
private PersonDetails details;

人員詳細信息:

@Id
@Column(name="id")
private String Id;

@OneToOne
@JoinColumn(name="person_id")
private Person person;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM