2014-09-20 103 views
0

我試圖刪除一個對象集合,但不知何故它們仍然存在。刪除的集合仍然存在

List<Assignment> assignments = shift.getAssignments(); 
shift.getObjectContext().deleteObjects(assignments); 
shift.getObjectContext().commitChanges(); 

後執行的CommitChanges,集合中的唯一分配有此值:

[{<ObjectId:Assignment, assignment_id=26067>; committed; // snipped for clarity 

我認爲後DeleteObject的(),國家將被刪除;在commitChanges()之後,它不應該保留在集合中。根據這個:http://cayenne.apache.org/docs/3.0/persistent-object-lifecycle.html

我錯過了什麼?

編輯:更改代碼以刪除不同的數據對象,然後將更改傳播到分配。

+0

請參閱下面關於刪除規則的答案。在你的例子中,雖然在刪除和提交後是「已提交」的賦值狀態,但是可疑的是。它應該是「短暫的」。看起來這些對象在打印此語句時未被刪除。這裏沒有足夠的信息來猜測原因。您是否還會在日誌中看到DELETE SQL語句(特別是ID 26067),並在打印出Assigmnent狀態之前或之後執行這些操作? – 2014-09-20 06:36:10

+0

是的,我不確定發生了什麼「承諾」狀態。我現在無法重新創建相同的問題。但我認爲問題的一部分是,在我不知情的情況下,有一個回調創建任務。我查看日誌後發現它。 – Tuan 2014-09-22 19:00:02

回答

1

如果您希望從集合中刪除的對象上刪除,你可以做的兩兩件事之一:

  • 手動通過遍歷集合副本,並呼籲「removeFromAssignments()」
  • 刪除爲分配定義一個NULLIFY刪除規則 - >移位關係
相關問題