J'ai une application fonctionnant correctement dans Google App Engine. J'ai réalisé que l'un de mes objets JDO-enhanced que j'ai oublié d'implémenter est égal et hashCode (j'ai besoin d'utiliser l'objet dans un ensemble). Donc j'ai fait. Je n'ai vraiment rien fait de spécial dans ces implémentations, en fait j'ai juste utilisé Eclipse pour les générer. Comme si:Google App Engine, JDO et equals/hashCode
@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;
}
Alors maintenant, lorsque je tente de frapper toutes les URL dans l'application, cette exception est jeté:
/addUser javax.jdo.JDOUserException: classe persistante « classe com. bpapa.myapp.domain.User ne semble pas avoir été amélioré. Vous pouvez réexécuter l'enhancer et vérifier les erreurs dans la sortie. " n'a pas de table dans la base de données, mais l'opération l'exige. Veuillez vérifier la spécification des méta-données pour cette classe. à 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)
Des idées sur ce que j'ai fait de mal?
Faire les choses fixes propres. – bpapa