繁体   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