我有一个像这样的可持续课程:
@PersistenceCapable(detachable = "true")
public class MyClass {
...
@Persistent(defaultFetchGroup = "true")
@Element(dependent = "true")
private Set<Key> mySet = new HashSet<Key>();
...
}
我首先坚持,然后回读:
pm.getFetchPlan().setGroup(FetchPlan.DEFAULT);
pm.getFetchPlan().setMaxFetchDepth(1);
myInstance = pm.getObjectById(MyClass.class, key);
奇怪的是,这在服务器重启后第一次正常工作。但是,第二次进行查询时,mySet仍然为空。
我一直在尝试使用ArrayList,但没有运气。我完全不知道可能导致这样的行为,所以任何关于可能是什么原因的模糊指示都将非常感激。
更新
我找到了修复,但我不明白为什么会有效。如果我为User添加了一个拷贝构造函数并在读取后复制了该实例,那么它将一致地工作。我会假设有一个缓存总是把我送回同一个实例,但是通过该程序,我找不到任何将角色设置为null的代码。这可能是我忽视的副作用,还是有一个我不理解的更基本的问题?