Java 使用serializable和defaultFetchGroup集对列表进行注释时,应用引擎不存储列表
我正在尝试存储一个包含列表的Jdo。使用注释对列表进行注释时Java 使用serializable和defaultFetchGroup集对列表进行注释时,应用引擎不存储列表,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我正在尝试存储一个包含列表的Jdo。使用注释对列表进行注释时 @Persistent (defaultFetchGroup = "true") 它工作得很好,但是当我 @Persistent (serializable = "true", defaultFetchGroup = "true") 它不存储列表。有人知道为什么吗?当我有一个要存储的自定义对象列表时,我该怎么办?我是否将它们标记为可序列化的?我看到3种情况: 核心类型(列表,列表,等等):您应该使用@Persistent @Per
@Persistent (defaultFetchGroup = "true")
它工作得很好,但是当我
@Persistent (serializable = "true", defaultFetchGroup = "true")
它不存储列表。有人知道为什么吗?当我有一个要存储的自定义对象列表时,我该怎么办?我是否将它们标记为可序列化的?我看到3种情况:
列表
,列表
,等等):您应该使用@Persistent
@PersistenceCapable
类(List
):您应该使用@persistence
,情况就是这样@PersistenceCapable
类,而是一个@Serializable
类(List
):您必须使用@Persistent(Serializable=“true”)
serializable=“true”
时,每次修改列表时都需要调用JDOHelper.makeDirty
通知JDO:
MySerializableClass serializableObject = new MySerializableClass();
persistedObject.getMySerializableClassList().add(serializableObject);
JDOHelper.makeDirty(persistedObject, "mySerializableClassList");
注意:使用defaultFetchGroup=“true”
参数告诉JDO自动获取列表中的所有对象,而不是等待访问字段(延迟获取)。@Persistent(serialized=“true”,defaultFetchGroup=“true”)
是正确的注释
另外,当您将某些内容更改为列表中的一个元素时,应该调用JDOHelper.makeDirty(这是“yourSerializedField”)代码>因为当它重新序列化元素时,它只查看引用,而不查看每个项(它使用对象的.equals)
希望这有帮助