2013-05-21 120 views
0

如果我使用實體管理器的remove方法,波紋管:PlayOrm級聯實體去除

DGEntity e = this.findById(id.toString(), entityClass); 
getEm().remove(e); 

,並假定DGEntity有很多與其他實體關聯,將remove方法刪除唯一實體E或將它也刪除相關的類?

我希望我可以級聯刪除,如果我想通過配置註釋或傳遞一個額外的參數的方法...這可能嗎?

回答

1

不,遊戲中沒有瀑布。在許多模型中,有很多問題和大量的角落案例使得hibernate中的級聯成爲巨大的調試難題。由於某些模型如果正確遍歷它們可能會將整個數據庫加載到內存中,這也意味着級聯需要刪除每個實體或被正確配置。除此之外,不同的用例需要有時需要cascae,其他用例需要級聯,因此最好的方法是不要使用級聯。我們選擇不進行級聯,因爲它很容易遍歷自己的模型並刪除,而當另一個用例彈出時,只想刪除父實體但不刪除子實體,則代碼更容易並且不需要撤消級聯邏輯。

我花了好幾個小時來調試hibernate項目的級聯使用:(我最好不要再這麼做了,