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.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:241) で org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:674) で org.datanucleus.jdo.JDOPersistenceManager.

文字列オブジェクトは永続化できませんか?

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

String をデータストアに永続化できますが、エンティティの一部として永続化できます。クラスを定義することで、データストアとの間で読み書きされるエンティティを記述します。たとえば、このドキュメントでは、JDO を使用してエンティティ クラスを定義する方法について説明します。

クラスは、エンティティがデータストアに書き込まれるときに格納されるフィールドと、それらが書き込まれる場所を決定します。このようなクラスがないと、App Engine は呼び出し時にデータを保存する場所makePersistent(サンプル コードの場合のように) も、データを読み取る方法も認識しません。

于 2012-07-11T22:21:31.303 に答える