Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: xustyx en 8 Agosto 2015, 17:02 pm



Título: [Resuelto] Problemas con hibernate (DAO).
Publicado por: xustyx en 8 Agosto 2015, 17:02 pm
Buenas!

Estoy haciendo unas pruebas con Spring y Hibernate y tengo un problema cuando quiero guardar un objecto, os explico.

Tengo la classe CapturePoint que dentro tiene un attributo Point. En la base de datos esto se refleja como 2 tablas con una relacion 1-n, es decir que Point tiene n CapturePoint y CapturePoint tiene 1 Point.

Bueno, cuado hago el save() de un CapturePoint, se me guarda primero el Point y luego se guarda el CapturePoint con el id ya associado que se le ha dado al Point (Cascade.persist).

Hasta aquí todo bien, el problema viene cuando quiero guardar otro CapturePoint que tiene un "nuevo" Point associado (Point tiene una Constraint unique de sus valores "X" e "Y") con los valores "X" e "Y" iguales. Logicamente el programa peta diciendome que no puede crear un nuevo CapturePoint por que no se ha podido guardar su Point debido a que existe uno que cumple dicha constraint.

Así que se me ocurre la solución de modificar el DAO para que cuando detecte que sucede este caso, coja el Point que ya existe en la DB, lo asocie de nuevo al objeto CapturePoint que estoy guardando, y haga un save() de nuevo.

De todos modos, esta solución no me convence nada, por que me hace tener que tocar todos los DAO's de todas las class que tengan problemas similares. Entonces, supongo que debe existir alguna anotación para indicarle a Hibernate, que en caso de que un objeto anidado al objeto del save() ya exista, este no se guarde y asocie el objeto anidado de la classe ha guardar con el que ya existe en la DB.

Bueno espero que se entienda mi duda y si necesitáis mas info pedírmela.  

Un saludo!


Título: Re: Problemas con hibernate (DAO).
Publicado por: xustyx en 10 Agosto 2015, 23:48 pm
Resuelto!!!

El problema era que al guardar me truncaba la data... entonces, a la hora de persistir de nuevo, hibernate pensaba que no existía una instancia parecida en el DB, y al guardar, pum!

No sabéis la de veces que he creado las tablas.

Un saludo ;)