Tengo una aplicación en Google App Engine que estaba trabajando muy bien. Me di cuenta de que uno de mis objetos mejorados con JDO olvidé implementar equals y hashCode (necesito usar el objeto en un conjunto). Así que lo hice. Realmente no hice nada especial en estas implementaciones, de hecho acabo de usar Eclipse para generarlas. De este modo:Google App Engine, JDO, y es igual a/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;
}
Así que ahora, cuando trato de golpear a cualquier URL en la aplicación, esta excepción se tira:
/addUser javax.jdo.JDOUserException: Persistente clase "com clase. no parece bpapa.myapp.domain.User haber sido mejorada. Es posible que desee volver a ejecutar el potenciador y comprobar si hay errores en la salida ". no tiene tabla en la base de datos, pero la operación lo requiere. Por favor, compruebe la especificación de los metadatos para esta clase. en org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException (NucleusJDOHelper.java:427) en org.datanucleus.jdo.JDOQuery.execute (JDOQuery.java:249) en com.bpapa.myapp.servlet.AddUserServlet.doPost (AddUserServlet.java:34)
¿Alguna idea sobre lo que hice mal?
Hacer las cosas fijas limpias. – bpapa