我得到了上述錯誤「org.hibernate.ObjectDeletedException:刪除的對象將被級聯重新保存(刪除從關聯刪除對象):「。有人可以幫我解決什麼問題,應該怎麼解決?org.hibernate.ObjectDeletedException:刪除的對象將被級聯重新保存(從關聯中刪除刪除的對象):
謝謝。
我得到了上述錯誤「org.hibernate.ObjectDeletedException:刪除的對象將被級聯重新保存(刪除從關聯刪除對象):「。有人可以幫我解決什麼問題,應該怎麼解決?org.hibernate.ObjectDeletedException:刪除的對象將被級聯重新保存(從關聯中刪除刪除的對象):
謝謝。
沒有映射結束代碼有點困難... 這是由於您正在刪除與某個集合關聯的對象而導致的。
你必須從擁有集合(S)刪除對象,之後,刪除對象
parentObject.collection.remove(objToDelete);
session.delete(objToDelete);
session.save(parentObject);
但是你可以這樣使用deleteOrphan來映射集合這樣
class ParentObject {
@OneToMany(orphanRemoval=true)
private List<ChildObject> collection;
}
避免和代碼看起來像
parentObject.collection.remove(objToDelete);
session.save(parentObject);
您不需要刪除對象,因爲它在保存parentObject時被Hibernate自動刪除。
希望能幫助
您已刪除會話的實體(A),但它是由另一個實體引用,並anotated與級聯註解。該參考將導致實體(A)立即重新處理。由於這可能不是你想要的,所以hibernate抱怨。
解決的辦法是找到實體可以通過的所有引用(包括集合),並將它們設置爲null
/從集合中刪除實體。
你可以把你的刪除邏輯放在一邊:讓參考(如果只有一個)刪除孤兒,然後在@bellabax中刪除它。
這個異常告訴你正在刪除的對象也被映射爲任何實體的集合,並且你的集合中的級聯id全部都是。所以,如果你想刪除的任何方式,您可以將您的級聯改變
cascade = CascadeType.DETACH
如果您通過XML這樣做(而不是註解),以下是爲我工作的解決方案:
一到 - 許多社團:
小心:會話。因爲Hibernate需要查看更改,所以flush()非常重要,如果不能刷新會話,我會建議您在不同的事務中執行步驟(1,2),然後執行步驟(4,5, 6)在新的交易中。
hibernate用戶應該使用這個方法去除孤兒@Cascade({org.hibernate.annotations.CascadeType.DELETE_ORPHAN}) – Akhilesh