2011-03-31 112 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

相关问题