我正在寻找如何在我的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
添加回答
举报
0/150
提交
取消