Comunidad de diseño web y desarrollo en internet online

Fallo de FK a null de hibernate cuando borro un objeto

Citar            
MensajeEscrito el 28 Mar 2010 09:56 am
Hola a todos.

(Uso hibernate + Flex)

Mi problema es el siguiente.

Tengo comentarios asociados a usuarios, por lo que comentarios tiene many-to-one a usuario siendo este usuario not-null=TRUE. Pues bien, cuando borro del array de comentarios el comentario en cuestión (con removeItemAt) y sin tocar al usuario se realiza correctamente el borrado, pero si justo en ese momento añado un nuevo comentario (con addItem) hibernate me devuelve un error de referencia a una propiedad nula DEL USUARIO !!! :o. El usuario ya existe en la base de datos, lo capturo con un fill y lo almaceno en una variable (usuarioActual) accesible por todas las clases.

org.hibernate.PropertyValueException:not-null property references a null or transient value...

Con debug en flex he observado que el usuario se añade al comentario correctamente, pero cuando se realiza el commit en el DataService se produce dicho fallo.

He leido que ese fallo se puede producir por dos causas:

- Que la propiedad se ponga a nula (que en mi caso no es así).
- O que una asociación haga referencia a una instancia que no haya sido salvada (que tampoco es mi caso porque dicho usuario ya existe en la base de datos).

También he observado que si después de darme el fallo intento añadir de nuevo el comentario lo hace correctamente.

A ver si me podéis ayudar con esto.

Gracias.

Por Ajenjo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Mar 2010 01:32 pm
Indico otro punto más.

Tengo 3 usuarios dados de alta en base de datos con 4 atributos solamente (id, nombre, apellidos y rol) y este problema únicamente se produce cuando obtengo como usuarioActual el primero de ellos, si elijo cualquiera de los otros dos no se produce dicho error.

En la base de datos no hay ningún dato inconsistente.

Incluso tengo un arrayCollection con los usuario del sistema y cuando los asocio a un fichero (relación many-to-many) para darles permisos para que puedan verlo, escribo en la siguiente tabla con los atributos indicados:

Tabla.- FicheroUsuarios
id_fichero -> ficheros (FK)
id_usuario -> usuarios (FK)

se produce un error (en este caso un error en Flex) en dicho array de usuarios debido a que el usuario en cuestión se convierte a null cuando los asocio al arrayCollection de ficheroUsuario mediante un addItem. Obtengo el siguiente resultado en debug:

ficheroUsuarios (ArrayCollection)
[0] -> null
[1] -> Usuario (Object)
[2] -> Usuario (Object)

Esto último se produce cuando asocio los usuarios y los quito de la asociación más de una vez e independientemente del usuario que tenga en la varieble usuarioActual.

Gracias.

Por Ajenjo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Mar 2010 10:32 pm

Ajenjo escribió:

Indico otro punto más.

Tengo 3 usuarios dados de alta en base de datos con 4 atributos solamente (id, nombre, apellidos y rol) y este problema únicamente se produce cuando obtengo como usuarioActual el primero de ellos, si elijo cualquiera de los otros dos no se produce dicho error.

(...)


Ejecutando de nuevo el código he observado que esto no es del todo correcto, sino que el fallo se produce cuando usuarioActual es el propietario del comentario. Es independiente de la posición que ocupe en el array.

Por Ajenjo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Mar 2010 10:22 pm
usa ibatis es mejor

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2010 07:26 am
Gracias por el consejo.

Pero ya tengo bastante abanzado el proyecto y no puedo permitirme cambiar el framework.

Por Ajenjo

2 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.