Foros del Web » Programación para mayores de 30 ;) » Java »

deleted object would be re-saved by cascade (remove deleted object from associations)

Estas en el tema de deleted object would be re-saved by cascade (remove deleted object from associations) en el foro de Java en Foros del Web. Hola! ¿Alguien sabe a que se debe este error en hibernate: " deleted object would be re-saved by cascade (remove deleted object from associations) "? ...
  #1 (permalink)  
Antiguo 08/09/2008, 05:46
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 2 meses
Puntos: 1
deleted object would be re-saved by cascade (remove deleted object from associations)

Hola!
¿Alguien sabe a que se debe este error en hibernate: "deleted object would be re-saved by cascade (remove deleted object from associations)"?

En los archivos .hbm.xml tengo puesto en los set la propiedad cascade="all-delete-orphan"

Cuando quiero editar o borrar algo me sale esa excepción.

Saludos!!
  #2 (permalink)  
Antiguo 08/09/2008, 09:16
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 9 meses
Puntos: 10
Respuesta: deleted object would be re-saved by cascade (remove deleted object from as

Hola,

Supongo que cuando borras un Padre quieres borrar tambien a sus hijos.

Este error, segun, es porque intentas borrar un hijo que tiene dos padres, entonces al borrar un padre, uno de sus hijos pertenece a otro.

Podrias poner el codigo de como estas haciendo el borrado?

Intenta hacer esto:

objetoABorrar.getPadre().getHijos().remove(objetoA Borrar);
..............
..............
session.delete(objetoABorrar)


saludos!
  #3 (permalink)  
Antiguo 09/09/2008, 00:53
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: deleted object would be re-saved by cascade (remove deleted object from as

Hola!

Ese problema lo solucioné modificando los .hbm.xml porque tenía la propiedad lazy="false". Pero ahora tengo otro problema, supongo que será al cambiar eso. De todas formas, si alguien quiere ver los .hbm.xml por si se me escapa algo que me diga y los pondré.

El método que utilizo para borrar es este, está en la clase DAO:

public void borrarAlumno(String DNI) {
Alumno a = new Alumno();
a = (Alumno) getHibernateTemplate().get(Alumno.class, DNI);
getHibernateTemplate().delete(a);
}

Luego tengo la clase servicio, que tiene como propiedad el DAO.

public void borrarAlumno(String DNI) {
alumnoDaoImp.borrarAlumno(DNI);
}

Y por último tengo el controlador, que es donde hago la llamada al servicio para editar, borrar... Bien, el caso es que en editar (que es el trozo de código que viene a contiunación), si le modifico el DNI, no me carga el alumno cuando cuando vuelve a la página principal, siempre lo carga la siguiente vez, y si no le modifico el DNI (que es clave principal), me da : a different object with the same identifier value was already associated with the session

String DNIanterior = request.getParameter("DNIanterior");
String DNInuevo = request.getParameter("DNI");

if (DNIanterior.equals(DNInuevo)){
System.out.println("El alumno ya existe, lo modificamos");
alumno = alumnoServicio.getAlumnoFromRequest(request);
alumnoServicio.editarAlumno(alumno);
}
else{
alumnoServicio.borrarAlumno(DNIanterior);
alumno = alumnoServicio.getAlumnoFromRequest(request);


alumnos = alumnoServicio.getAlumnos();
Alumno a = new Alumno();
Boolean encontrado=false;
for (int i=0; i<alumnos.size();i++){
a=alumnos.get(i);
if (a.getDNI().equals(alumno.getDNI())){
encontrado=true;
break;
}
}
if (encontrado==false){
alumnoServicio.anhadirAlumno(alumno);
}
}
nombreVista="gestionAlumnos";
mav = new ModelAndView(nombreVista);
mav.addObject("alumno", alumno);


Saludos!!
  #4 (permalink)  
Antiguo 09/09/2008, 01:14
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: deleted object would be re-saved by cascade (remove deleted object from as

Podría ser que al estar el controlador configurado así:


<bean id="controladorAlumno" class="org.cisgalicia.control.controladores.Contro ladorAlumno">
<property name="alumnoServicio" ref="alumnoServicio" />
<property name="empresaServicio" ref="empresaServicio" />
<property name="cursoServicio" ref="cursoServicio" />
</bean>

utilice la misma sesión para los tres servicios?

Saludos!!
  #5 (permalink)  
Antiguo 09/09/2008, 07:03
Avatar de morenita7722  
Fecha de Ingreso: enero-2007
Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: deleted object would be re-saved by cascade (remove deleted object from as

Solucionado!!
Bueno, a ver...
El error de este mensaje está solucionado: la propiedad lazy en los ficheros .hbm.xml estaba mal
Después tenía un problema que me decía que el flushmode era sólo para leer.
Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition

Leí que había que hacer un filtro, para cambiar el flushmode, lo hice, pero tenía problemas con las sesiones, que si hacías más de una operación a la vez la sesión ya se había cerrado, con lo cual eliminé el filtro y lo que hice fue configurar las transacciones para que tuvieran los "permisos" necesarios
Ahora todo va bien. (bueno, por ahora... jeje)
Saludos!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:11.