gpt4 book ai didi

java - 如何在非主键上使用 hibernate 注释设置单向一对一关系?

转载 作者:行者123 更新时间:2023-11-29 07:57:07 24 4
gpt4 key购买 nike

我设置了一个单向的一对一映射表。这是我的实现的简化版本。

// 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;

这似乎不起作用,因为 hibernate sql 日志显示 hibernate 正在尝试在“Person.Id=PersonDetails.Id”上对 Person 和 PersonDetails 进行联接,而我真正想要的是“Person.Id=PersonDetails.personId” ”。

我怎样才能实现这个目标?

最佳答案

我认为您应该将拥有方移至 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;

关于java - 如何在非主键上使用 hibernate 注释设置单向一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com