【问题标题】:Google App Engine - JDO - How to update collection?Google App Engine - JDO - 如何更新收藏?
【发布时间】:2011-03-31 23:39:54
【问题描述】:

我在尝试更新集合中的一个对象时遇到问题, 使用 JDO。

以下是事实:

  • 我有一堂课(姑且称之为 BigClass),具有嵌入式 类(SmallClass)包含一个 数组列表。
  • 我不使用/不需要交易。
  • 我查询数据库以获取列表 BigClass 项目应该是 修改的。我遍历每个 他们。
  • 我从列表中删除了一个元素 SmallClass 嵌入在 当前的 BigClass,变化不大 一直坚持。
  • 如果我在 改变,它看起来修改了,但如果我 检查 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(participant)
  • 我试过了,但似乎没有什么不同。在同一个会话中,我实际上从 3 个列表中删除了元素。只有在最后一个中,更改才会始终保持不变。

标签: java debugging google-app-engine


【解决方案1】:

list 中删除smth 后,您可能需要调用pm.makePersistent(participant); 来保留您的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2010-12-11
    • 2011-12-28
    • 2011-06-19
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多