[英]JPA / Hibernate unidirectional one-to-one mapping with shared primary key
[英]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.