Trucos al utilizar colecciones en Hibernate
El dia de hoy tuve que agregar nuevos campos a una colección. A primera vista, esto era de los más sencillo:
- Modificar el POJO
- Mapear con Hibernate los nuevos atributos
- Modificar método addElement de la clase que contiene a la colección.
- Modificar JSP de edición y clase Form (trabajo con struts)
- Compilar y listo!
Sin embargo, me encontré que al ejecutar la aplicación e ingresar datos a los nuevos campos y querer grabar, la base de datos arrojó el error 'unique constraint'.
Después de un buen rato de prueba y error, decidí crear una nueva tabla para almacenar los datos de la colección, con un 'insert/select' traspasé los datos de la tabla original a esta nueva tabla, y luego renombré las tablas de tal manera que la tabla nueva fuera ahora la tabla oficial.
Y para mi sorpresa, este pequeño truco hizo la diferencia! Ahora todo funcionaba a la perfección.
Conclusiones:
- Me parece que hibernate, para las colecciones, crea una tabla y una llave primaria que utiliza para identificar cuando un elemento de la colección ha sido modificado. Esto no lo he comprobado.
- Quizá si se modifica esta llave primaria, en vez de crear una segunda tabla y todo lo demás que hice, sería suficiente para que hibernate implementara bien los cambios
Escrito por Omar Otoniel
Comentarios
Publicar un comentario