我嘗試使用JDO更新集合中的一個對象 時出現問題。Google App Engine - JDO - 如何更新集合?
這裏是事實:
- 我有一個類(姑且稱之爲 大類),即具有含 ArrayList的嵌入式 類(小類)。
- 我不需要使用/需要交易。
- 我查詢數據庫以獲取 BigClass項目列表,該項目應修改爲 。我遍歷每個 他們。
- 我從 中刪除一個元素,嵌入 當前BigClass中的SmallClass,更改不是 始終保持。
- 如果我打印(記錄) 更改後的對象,它看起來被修改,但是如果我檢查DataViewer,對象是 未更新。
- 我甚至嘗試過在BigClass上使用 JDOHelper.makeDirty,使用fieldName SmallClass的 ,而它的 仍然不起作用。
一些相關代碼:
Query q = pm.newQuery(BigClass.class,"id==:ids");
List<BigClass> participatingUsers=(List<BigClass>)
q.execute(participantIDs);
//Update the participants
ListIterator<BigClass> it=participatingUsers.listIterator();
BigClass participant;
boolean modified;
while(it.hasNext())
{
participant=it.next();
participant.list.remove(smth);
JDOHelper.makeDirty(participant,"collection");
}
....
modify other objects
....
pm.close()
另一件事是,某些更改這一部分後,我做的 堅持...
所以,如果您有任何建議,請拍!
科斯明
我會確保在完成修改後立即撥打pm.makePersistent(參與者) – Aleadam 2011-04-01 12:58:55
我試過了,但似乎沒有什麼區別。在同一個會話中,我實際上從3個列表中刪除了元素。只有在最後一個變化總是持續下去。 – Cosmin 2011-04-06 20:37:31