我正在尋找如何在我的Branch對象中解決遞歸和雙向一對一體關(guān)系:@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貢獻(xiàn)1780條經(jīng)驗 獲得超1個贊
具有自引用的雙向@OneToOne映射的正確方法:
@Entity
@Table("BRANCH")
public class Branch {
@OneToOne
@JoinColumn(name = "parent_id")
private Branch parent;
@OneToOne(mappedBy = "parent")
private Branch child;
這是子字段中對象的祖先
這是父字段中對象的后代
層次結(jié)構(gòu)是:此>子>父級
你不需要兩個外鍵,一個外鍵在擁有端的關(guān)系就足夠了。在 JPA 中,反向 OneToOne 必須使用 mappedBy 屬性。
https://en.wikibooks.org/wiki/Java_Persistence/OneToOne#Inverse_Relationships,_Target_Foreign_Keys_and_Mapped_By
添加回答
舉報
0/150
提交
取消