我尝试使用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