Pregunta

Tengo una aplicación en Google App Engine que funcionaba bien. Me di cuenta de que uno de mis objetos mejorados con JDO que 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, solo usé Eclipse para generarlas. Me gusta así:

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

Entonces, cuando trato de presionar cualquier URL en la aplicación, se lanza esta excepción:

  

/ addUser   javax.jdo.JDOUserException: clase persistente " Clase com.bpapa.myapp.domain.User no parece haber sido mejorada. Es posible que desee volver a ejecutar el potenciador y verificar si hay errores en la salida. & Quot; no tiene una tabla en la base de datos, pero la operación lo requiere. Verifique la especificación de MetaData 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?

¿Fue útil?

Solución

¿Tiene el eclipse configurado para ejecutar automáticamente el potenciador del núcleo de datos? ¿Qué sucede si intenta limpiar el proyecto con project- > clean y luego construye el proyecto desde cero?

Otros consejos

Configuración en eclipse (" ejecute el problema relacionado con el potenciador del núcleo de datos " como se discutió anteriormente)

Configuración del proyecto - > Google - > App Engine - > ORM

Cambiar src parh " src / " ruta a la " src // " exacta ruta de sus clases JDO

Me enfrenté al mismo problema, y ??cuando hice el Proyecto - > Limpio, vi la siguiente excepción en el registro:

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

Entonces, eliminé:

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

del proyecto eclipse, limpiado y reconstruido, todo comenzó a funcionar como se esperaba.

Resolví este problema actualizando a la última versión de appengine java sdk.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top