Hola,

Les cuento la situación en la que me encuentro a ver si pueden
ayudarme o guiarme un poco en la solución. Tengo una aplicación que
tiene que lidiar con una base de datos ya diseñada y en funcionamiento
desde hace rato. No tengo demasiada autonomía sobre la BD ya que
además es usada y administrada por otras aplicaciones como META4 por
ejemplo.
El tema en este caso son las claves compuestas. Se que no es
recomendado utilizarlas y que de alguna manera es alejarse del diseño
de objetos y acercarse al diseño de bases de datos, pero en este caso
(y contra mi voluntad) digamos que tengo que respetar estas claves
compuestas.
El problema se presenta en qué NH no se da cuenta cuando es una
inserción o cuando es una actualización, de manera que, después de
investigar un poco en internet buscando alternativas encontré que la
mayoria proponen diferenciar a mano si es un Update() o un Save().
Ahora bien, algunas entidades obviamente funcionaron bien, pero me
pasa que cuando tengo entidades padre (cuya clave es compuesta) que
tienen hijos (cuyas claves son compuestas también) que al querer
persistir los hijos me da error, al parecer porque no puede
identificar si debe hacer un Update() o un Save() con ellos. Es decir,
el padre lo podría persistir correctamente pero al llegar a los hijos
falla.
A alguno le ha tocado lidiar con este tema? Y si es asi, qué
soluciones encontraron? Una posible solución podría ser eliminar los
Cascades y realizar el mismo mecanismo manual con los hijos, es decir,
verificar si existen ya en la BD, y determinar si es Update() o
Save(). Esto calculo va a funcionar pero por ahi hay alternativas
mejores.

Perdón lo extenso del planteo, y si algo no quedó claro me dicen e
intento explicarlo mejor. Desde ya muchas gracias por cualquier dato
que me puedan compartir para darle una solución viable a este tema.

Saludos,

Matias.-

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a