我正在使用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);
感谢任何帮助,谢谢!