GAE数据存储区 - 实体字段暂时为空

时间:2014-01-24 15:31:08

标签: java google-app-engine gwt transactions jdo

我正在使用GAE,Java,JDOv3,GWT。

这是我的问题: 我有一个人类和一类食物,他们看起来如下:

人:

public class Person
{
   .
   . id stuff here
   .

   @Persistent(mappedBy = "parentPerson")
   List<Food> favoriteFoods = new ArrayList<Food>();
}

食物:

public class Food
{
   .
   . id stuff here
   .

   @Persistent
   Person parentPerson;
}

现在,如果我进行查询以检索所有人员,我也将检索所有食物(我确保'触摸'最喜欢的食物列表(因此它会被检索)。这一切都很棒。

但是,如果我决定更新属于Person实体的一个Food实体,然后在检索所有Person-entity之后直接更新一些毫秒(100ms-> 2sec),Person-class中的favoriteFoods字段是根据数据存储区查看器清空(以及实际检查代码中的列表时)。这听起来不是什么大不了的事,但想象一个人访问Person-object然后将它重新保存到数据存储区,当它的favoriteFoods列表为空时。它将用空的列表覆盖现有列表。

如果我真的检索到包含最后已知数据的favoriteFoods列表,我会接受这个作为可接受的行为,但事实并非如此。相反,我暂时得到一个空列表?如果我不断刷新数据存储区查看器(或代码中),列表最终将获得正确的值(几毫秒)。

我正在通过执行以下操作来检索Person-entities:

PersistenceManager pm = PMF.getPersistenceManager();
Query query = pm.newQuery(Person.class);
List<Person> persons = (List<Person>) query.execute();
//Some 'touching'
persons = (List<Person>) pm.detachCopyAll(persons);

通过执行以下操作来保存实体:

pm.makePersistent(entity);

感谢任何帮助,谢谢!

0 个答案:

没有答案