我使用聯接表具有OneToMany/ManyToOne雙向關係。孩子們在一個名單,並訂購。使用JoinTable(使用OrderColumn)消除OneToMany/ManyToOne雙向關係中的重複問題
這裏的設置:
家長:
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(
name="parent_child",
[email protected](name="parent_id"),
[email protected](name="child_id")
)
@OrderColumn(name="child_order")
public List<Child> getChildren() {
return children;
}
兒童:
@ManyToOne
public Parent getParent() {
return parent;
}
這裏是我的問題:是否如預期的父表,但這裏是孩子和parent_child表:
孩子:
int8 id,
int8 parent_id <---
parent_child:
int8 parent_id, <---
int8 child_id,
int8 child_order
有重複與PARENT_ID - 它在連接表和子表,這意味着它可以調用parent.getChildren()得到(0).getParent規定。 ()並最終得到一個不同於你開始的父類,這應該是不可能的(我希望在數據庫級別執行該操作)。
我能看到解決這個問題的唯一方法是在孩子中使用連接列,而不是使用連接表。但我不喜歡這樣做,因爲那時我必須將訂單移動到孩子,再加上hibernate文檔說應該避免使用OneToMany的JoinColumn(但他們沒有真正說出原因)。
是否有任何其他方式擺脫這種重複/可能的不一致?即通過使用連接表中的數據讓孩子知道其父母的一些方法?