2010-01-13 12 views
5

me sale el siguiente error al intentar persistir un objeto:APP EclipseLink: ¿Cómo encontrar lo que está causando el error relación

java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST

¿Hay alguna forma sencilla de decir qué relación tiene el objeto problema?

Es posible que el objeto persistente tenga muchas relaciones y un ensayo y error o encuentre por eliminación trabajos, pero me gustaría saber si existe una manera más rápida y sencilla de identificar el objeto de relación problema.

Actualización: Me encuentro con este problema periódicamente, y siempre he podido encontrar el origen del problema, o he podido reordenar las operaciones para resolver el problema, pero mi problema es la cantidad de tiempo que se necesita encontrar el objeto ofensivo.

Mis soluciones siempre se han encontrado por prueba y error. A veces encuentro la solución en minutos, pero a veces lleva horas. Mi pregunta es: ¿hay una manera más fácil de encontrar cuál de posiblemente muchas relaciones está causando el problema? La excepción solo afirma que se encontró un "nuevo objeto" a través de una "relación", esto no me ayuda a encontrar qué objeto o qué relación. ¿Hay un registro o una forma de decirle al sistema que proporcione un error más específico?

+2

Quizás quiera ver http://dev.eclipse.org/mhonarc/lists/eclipselink-users/msg00553.html Si es posible, muestre su código. No puedo adivinar lo que está sucediendo a menos que proporciones más información. –

+0

Arthur: Gracias y aprecio su respuesta, pero mi pregunta es más general que eso. He actualizado mi pregunta para darle una mejor idea de lo que estoy buscando. – rayd09

+0

¿Ha intentado configurar eclipselink.logging.level en persistence.xml - http://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging? – rochb

Respuesta

-1
<property name="eclipselink.logging.level" value="FINEST"/> 

hará que EclipseLink para mostrar los registros más detallados que pueden ayudar a detectar el motivo del error más de cerca.

+0

Gracias por la sugerencia. Intenté, todavía no da los detalles que necesito. – rayd09

0

El siguiente es un oyente para toda la solicitud de su aplicación, para activarlo:

  1. En su persistence.xml complemento:

    <property name="eclipselink.session.customizer" value="dz.bilelovitch.QueryListener"/> 
    
  2. Cree el QueryListener :

    import org.eclipse.persistence.config.SessionCustomizer; 
    import org.eclipse.persistence.sessions.Session; 
    
    public class QueryListener implements SessionCustomizer { 
    
        @Override 
        public void customize(Session aSession) throws Exception { 
         System.out.println("log " + aSession.getLog()); 
        } 
    
Cuestiones relacionadas