Frage

Ich habe eine App in Google App Engine bekam die feine arbeitete. Ich erkennen, dass man auf meinen JDO-enhanced Objekte, die ich equals und hashCode zu implementieren vergessen zu (Ich brauche das Objekt in einem Satz zu verwenden). So tat ich. Ich habe nicht wirklich etwas Besonderes in diesen Implementierungen in der Tat ich Eclipse-nur verwendet, um sie zu erzeugen. Wie so:

@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;
}

So, jetzt, wenn ich versuche, alle URLs in der App zu treffen, wird diese Ausnahme ausgelöst:

  

/ addUser   javax.jdo.JDOUserException: Persistent Klasse „Class com.bpapa.myapp.domain.User scheint nicht verbessert haben Sie können den Verstärker erneut ausführen wollen und für Fehler in der Ausgabe überprüfen..“ in der Datenbank keine Tabelle, aber die Operation erfordert. Bitte überprüfen Sie die Spezifikation des MetaDaten für diese Klasse.       bei org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException (NucleusJDOHelper.java:427)       bei org.datanucleus.jdo.JDOQuery.execute (JDOQuery.java:249)       bei com.bpapa.myapp.servlet.AddUserServlet.doPost (AddUserServlet.java:34)

Alle Ideen, was ich falsch gemacht habe?

War es hilfreich?

Lösung

Haben Sie Eclipse setzen Sie die Datanucleus-Enhancer automatisch ausgeführt wird? Was passiert, wenn Sie versuchen, das Projekt mit Ausbau-> sauber reinigen und dann das Projekt von Grund auf neu bauen?

Andere Tipps

Konfiguration in Eclipse ( "ausführen, um den Datanucleus-Enhancer" - damit zusammenhängende Frage, wie oben erörtert)

Projekteinstellungen -> Google -> App Engine -> ORM

Ändern src parh "src /" Pfad zum genauen "src //" Pfad der JDO-Klassen

stand ich das gleiche Problem, und wenn ich das Projekt tue -> Sauber, ich sah im Protokoll folgende Ausnahme:

{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."}

Also, ich entfernt:

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

von der Eclipse-Projekt, gereinigt und neu gebaut, alles begann wie erwartet funktioniert.

Ich löste dieses Problem, indem auf die neueste Version von appengine Java SDK zu aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top