09/09/2008, 00:53
|
| | | Fecha de Ingreso: enero-2007 Ubicación: aquí, ¿donde sino?
Mensajes: 261
Antigüedad: 17 años, 9 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!! |