Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用serializable和defaultFetchGroup集对列表进行注释时,应用引擎不存储列表_Java_Google App Engine_Jdo - Fatal编程技术网

Java 使用serializable和defaultFetchGroup集对列表进行注释时,应用引擎不存储列表

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

我正在尝试存储一个包含列表的Jdo。使用注释对列表进行注释时

@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)
    希望这有帮助