【问题标题】:JDO app engine: exception thrown when trying to persist class's List memberJDO 应用程序引擎:尝试持久化类的列表成员时抛出异常
【发布时间】:2012-01-28 15:07:03
【问题描述】:

我正在应用引擎服务器上运行以下 JDO 代码。

我收到以下错误消息:

org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The class "The class "java.util.ArrayList" is not persistable. 这意味着它要么没有被增强,要么文件的增强版本不在CLASSPATH(或被未增强的版本隐藏),或找不到该类的元数据/注释。”是不可持久的。这意味着它要么没有被增强,要么文件的增强版本不在 CLASSPATH 中(或者被未增强的版本隐藏),或者找不到该类的元数据。

这是我的课:

@PersistenceCapable(detachable="true")
class Store {

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Key key;

  @Persistent
  @Element(dependent = "true")
  private List<User> users;

  List<User> getUsers() {
    return users;
  }

}

当我跑步时

pm.makePersistent(store.getUsers());

我得到了上述异常。知道为什么会这样吗? 我认为文档说我可以将 List 作为持久性 元素,它会变成一个多值属性。

谢谢,

约翰·戈奇

【问题讨论】:

  • 我猜 List 类本身不具备持久性,因此必须执行 pm.makePersistent(store);使其得以持久。 (?)

标签: google-app-engine jdo


【解决方案1】:

我“猜测”是因为该方法接受一个对象,而您传入​​一个列表。如果你想持久化一个持久化对象列表,我希望调用pm.makePersistentAll(),这就是 JDO 文档所说的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多