1

我的目标是将字符串持久保存到数据存储区

final static PersistenceManager pm = PMF.get().getPersistenceManager();
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException
    {
        String s = "test";
        System.out.println(pm.makePersistent(s));
        PrintWriter pw = resp.getWriter();
        pw.write("Data Saved");
    }

不确定跟随 ERROR 的原因

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

造成的:

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

字符串对象不能被持久化吗?

4

2 回答 2

1

查看文档:

http://db.apache.org/jdo/api20/apidocs/javax/jdo/PersistenceManager.html#makePersistent(java.lang.Object )

您需要给它一个具有持久性的对象。使用 JDO 时,有一个增强器进程实际上会将您的 .class 文件打开并修改它们,以便它们可以被持久化。查看 GAE 文档以持久化您的对象:

https://developers.google.com/appengine/docs/java/datastore/jdo/dataclasses

于 2012-07-11T22:21:10.917 回答
1

您可以将字符串持久保存在数据存储中,但作为实体的一部分。您通过定义一个类来描述写入数据存储区和从数据存储区读取的实体。例如,本文档描述了如何使用 JDO 定义实体类。

该类指示将实体写入数据存储时存储哪些字段,以及将它们写入何处。如果没有这样的类,App Engine 将不知道在您调用时将数据保存在哪里makePersistent(如示例代码中的情况),也不知道如何读回数据。

于 2012-07-11T22:21:31.303 回答