Proba poner inverse="true" en el <bag> Gustavo.
2010/7/27 Ezequiel Cozzolino <[email protected]> > Hola a todos: > > Soy nuevo en NHibernate y me surgieron dos inconvenientes que paso a > comentarles: > > Tengo una relación del tipo BAG entre las clases PlanDeSiembra y > LineaPlanActividad. Muestro el segmento del archivo de mapeo de la clase > PlanDeSiembra en donde hago la relación one-to-many con la clase > LineaPlanActividad : > > <PlanDeSiembra.hbm.xml> > > <bag name="Actividades" table="LineasPlanActividad" > cascade="all-delete-orphan"> > <key> > <column name="IdPlanDeSiembra" not-null="true" > unique-key="PlanActividad" /> > </key> > <one-to-many class="LineaPlanActividad"/> > </bag> > > Este mapeo me crea la columna IdPlanDeSiembra en la tabla > LineaPlanActividad, lo cual es correcto. > > Primer inconveniente: > > Como la columna IdPlanDeSiembra no admite nulos da un error al intentar > guardar una colección. En el log veo que NHibernate primero inserta los > registros en la tabla LineasPlanActivdad con el campo IdPlanDeSiembra en > nulo, y luego hace un update para guardar el valor de la columna > IdPlanDeSiembra. > > > Segundo inconveniente: > > Para probar saque el not-null="true" del archivo de mapeo de la clase > PlanDeSiembra. Con esto puedo guardar la colección sin problemas. Comprobé > que efectivamente NHibernate primero hace un insert con los hijos y luego > hace un update de la columna que estabalece la relación de los hijos con el > padre. > > Hasta ahí el problema "estaría" solucionado, aunque no me convencía > permitir valores nulos en la columna IdPlanDeSiembra en la tabla > LineasPlanActividad. > > Hice otra prueba y fue ahí cuando me encontré con otro problema al realizar > la siguiente secuencia de acciones: > > - Elimino un elemento de la colección ==> planDeSiembra.remove(linea) > - Agrego un elemento a la colección con la misma unique-key que el elemento > anterior que fue eliminado ==> planesDeSiembra.add(linea) > - Guardo ==> planDeSiembraService.guardar(planDeSiembra) > > Me da un error ya que aparentemente NHibernate primero hace los insert y > despues los delete, con lo cual al intentar guardar el elemento de la > colección da un error por unique-key con el elemento que todavía no fue > eliminado. > > > Evidentemente algo estoy haciendo mal. Les voy a agradecer si me orientan > un poco en como resolver este problema. > Intente ser lo mas claro posible, si hace falta puedo enviar las clases y > los archivos de mapeo completos. > > Muchas Gracias > Ezequiel > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
