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

我正在寻找如何在我的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

}

这是一种被接受的模式吗?


胡子哥哥
浏览 92回答 1
1回答

慕神8447489

具有自引用的双向@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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java