我的目标是将String保留到数据存储区
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");
}
不确定跟踪错误的原因
类“The class”java.lang.String“不可持久化。这意味着 它要么没有增强,要么增强版本 该文件不在CLASSPATH中(或由未增强的文件隐藏) 版本),或找不到该类的元数据/注释。“ 是不可持续的。这意味着它要么没有增强,要么 该文件的增强版本不在CLASSPATH中(或者是 被未增强的版本隐藏),或类的元数据是 没找到。
引起:
org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: 类“The class”java.lang.String“不可持久化。这意味着 它要么没有增强,要么增强版本 该文件不在CLASSPATH中(或由未增强的文件隐藏) 版本),或找不到该类的元数据/注释。“ 是不可持续的。这意味着它要么没有增强,要么 该文件的增强版本不在CLASSPATH中(或者是 被未增强的版本隐藏),或类的元数据是 未找到。在 org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:241) 在 org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:674) 在 org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:694) 在com.arunraja101.SaveDataServlet.doGet(SaveDataServlet.java:91)
是否无法保留String对象?
答案 0 :(得分:1)
查看文档:
您需要为其提供一个具有持久性的对象。使用JDO时,有一个增强器进程实际上会打开你的.class文件并修改它们以便它们可以被持久化。查看GAE文档以保留您的对象:
https://developers.google.com/appengine/docs/java/datastore/jdo/dataclasses
答案 1 :(得分:1)
您可以在数据存储区中保留String,但作为实体的一部分。您可以通过定义类来描述写入和读取数据存储区的实体。例如,这个document描述了如何使用JDO定义实体类。
该类指示将实体写入数据存储区时存储的字段以及写入的位置。如果没有这样的类,当您调用makePersistent
(如示例代码中的情况)时,App Engine将不知道保存数据的位置,也不知道如何将其读回。