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
