質問

Google App Engineに正常に動作するアプリがあります。 equalsとhashCodeの実装を忘れたJDO拡張オブジェクトの1つに気付きました(オブジェクトをセットで使用する必要があります)。だから私はやった。これらの実装では特別なことは何もしませんでした。実際、Eclipseを使用してそれらを生成しました。そのように:

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

@Persistent
private String appleId;

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result
            + ((appleId == null) ? 0 : appleId.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    User other = (User) obj;
    if (appleId == null) {
        if (other.appleId != null)
            return false;
    } else if (!appleId.equals(other.appleId))
        return false;
    return true;
}

そのため、アプリでURLをヒットしようとすると、この例外がスローされます:

  

/ addUser   javax.jdo.JDOUserException:永続クラス" Class com.bpapa.myapp.domain.Userは拡張されていないようです。エンハンサーを再実行して、出力のエラーを確認することをお勧めします。データベースにテーブルがありませんが、操作にはテーブルが必要です。このクラスのメタデータの仕様を確認してください。       org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:427)で       org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:249)で       com.bpapa.myapp.servlet.AddUserServlet.doPost(AddUserServlet.java:34)で

私が間違ったことについてのアイデアはありますか?

役に立ちましたか?

解決

Datanucleusエンハンサーを自動的に実行するようにEclipseを設定していますか? project-> cleanを使用してプロジェクトをクリーンアップしてから、プロジェクトをゼロからビルドするとどうなりますか?

他のヒント

Eclipseでの構成(「datanucleusエンハンサーの実行」-上記の関連問題)

プロジェクト設定-> Google-> App Engine-> ORM

src parhを変更" src /"正確な" src //"へのパスJDOクラスのパス

私は同じ問題に直面しました、そして私がプロジェクトをしたとき->クリーン、ログに次の例外がありました:

{Caused by: org.datanucleus.exceptions.NucleusException: Plugin (Bundle) "org.datanucleus.store.appengine" is already registered. Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL "file:/C:/Documents%20and%20Settings/Administrator/workspace/Guestbook/war/WEB-INF/lib/datanucleus-appengine-1.0.8.final.jar" is already registered, and you are trying to register an identical plugin located at URL "file:/C:/eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.4.2_1.4.2.v201102111811/appengine-java-sdk-1.4.2/lib/user/orm/datanucleus-appengine-1.0.8.final.jar."}

だから、私は削除しました:

C:/Documents and Settings/Administrator/workspace/Guestbook/war/WEB-INF/lib/datanucleus-appengine-1.0.8.final.jar

Eclipseプロジェクトから、クリーンアップおよび再構築され、すべてが期待どおりに動作し始めました。

私は、appengine java sdkの最新バージョンに更新することでこの問題を解決しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top