2010-09-06 28 views

回答

2

這不是父子關係。孩子只有一位父母(屬於父母)。這是獨立實體之間的多對多關係。這是一個重要的區別。

你不能直接在HQL中按照它現在設計的方式從「父」中刪除「子」。這是你的選擇:

  • 加載「父母」進入記憶並從列表中刪除「孩子」。
  • 將「孩子」的引用添加回「父母」。使另一個關係反轉。當你移除一個「孩子」時,它實際上應該自動移除鏈接表中的項目,因爲那時鏈接將屬於「孩子」。
  • 使用原生SQL刪除鏈接。這不是很好,但也不是太糟糕,因爲它是微不足道的標準SQL。
+0

是的,我意識到它是一個多對多的對手,一直在愚蠢。我添加了一個屬性到'Child',但是簡單地說它是私有的,使得刪除能夠自動清理而不會暴露集合 – 2010-09-06 10:21:08

1

要實現這一點,需要有某種形式的關係,從開始子實體。

然後,你可以簡單地使用級聯刪除到其3d(我猜這是一個多對多)表。

+0

啊你說得對,它是一對多的。衛生署!有沒有辦法做到這一點,但沒有將關係映射到孩子端?讓它在我的領域沒有意義。我想我可以把它變成私人的,但它感覺像是一個黑客 – 2010-09-06 09:18:34

+0

它似乎在你的域名中是有意義的,因爲你需要一個在刪除時發生的動作......我只是簡單地將它添加到映射中。如果你真的不想那麼做,也許你可以在你的FK上設置數據庫中的級聯... – Bertvan 2010-09-06 09:31:12

相關問題