为了账号安全,请及时绑定邮箱和手机立即绑定

如何映射一对一递归实体?

如何映射一对一递归实体?

胡子哥哥 2022-09-01 17:27:13
我正在寻找如何在我的Branch对象中解决递归和双向一对一体关系:@Entity@Table("BRANCH")public class Branch {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "name")private String name;@OneToOne@JoinColumn(name = "id")private Branch parent;@OneToOne(mappedBy = "parent")@JoinColumn(name = "parent_id")private Branch child;//Getters and Setters}这是一种被接受的模式吗?
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

具有自引用的双向@OneToOne映射的正确方法:


@Entity

@Table("BRANCH")

public class Branch {


@OneToOne

@JoinColumn(name = "parent_id")

private Branch parent;


@OneToOne(mappedBy = "parent")

private Branch child;

这是子字段中对象的祖先

这是父字段中对象的后代

层次结构是:此>子>父级

你不需要两个外键,一个外键在拥有端的关系就足够了。在 JPA 中,反向 OneToOne 必须使用 mappedBy 属性。


https://en.wikibooks.org/wiki/Java_Persistence/OneToOne#Inverse_Relationships,_Target_Foreign_Keys_and_Mapped_By


查看完整回答
反对 回复 2022-09-01
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信