2011-03-31 146 views
1

我嘗試使用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() 

另一件事是,某些更改這一部分後,我做的 堅持...

所以,如果您有任何建議,請拍!

科斯明

+0

我會確保在完成修改後立即撥打pm.makePersistent(參與者) – Aleadam 2011-04-01 12:58:55

+0

我試過了,但似乎沒有什麼區別。在同一個會話中,我實際上從3個列表中刪除了元素。只有在最後一個變化總是持續下去。 – Cosmin 2011-04-06 20:37:31

回答

0

您可能需要調用pm.makePersistent(participant);list刪除smth後,以保存更改。

+0

我實際上已經嘗試過,它沒有工作:( – Cosmin 2011-04-06 20:35:48

+0

你可以發佈你的實體類的代碼嗎? – 2011-04-06 20:42:03

相關問題