Gracias por sus respuestas: Probé de poner el inverse="true", pero no funcionó. Probé lo siguiente:
Creo el padre. Luego planDeSiembra.add(lineaPlanActividad) padreService,guardar(planDeSiembra) Error: "System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'IdPlanDeSiembra', table 'Intranet.dbo.LineasPlanActividad'; column does not allow nulls" Luego como me recomendó Diego Mijelshon hice la relación bidireccional. Esto ultimo no me resuelve el problema cuando elimino un elemento de la colección, le vuelvo a agregar otro elemento con la misma unique key que el eliminado y guardo el padre. Al guardar el padre me da el error: planDeSiembra.remove(lineaPlanActividad) planDeSiembra.add(lineaPlanActividad2) ==> en donde lineaPlanActividad2 tiene la misma unique-key que lineaPlanActividad planDeSiembraService.guardar(planDeSiembra) Error: "System.Data.SqlClient.SqlException: Violation of UNIQUE KEY constraint 'UQ__LineasPlanActivi__3D29E0FF'. Cannot insert duplicate key in object 'dbo.LineasPlanActividad'" Saludos Ezequiel El 27 de julio de 2010 11:08, Diego Mijelshon <[email protected]>escribió: > http://nhforge.org/doc/nh/en/index.html#collections-onetomany > > *Very Important Note:* If the <key> column of a <one-to-many> association > is declared NOT NULL, NHibernate may cause constraint violations when it > creates or updates the association. To prevent this problem, *you must use > a bidirectional association* with the many valued end (the set or bag) > marked asinverse="true". See the discussion of bidirectional associations > later in this chapter. > > Diego > > > 2010/7/27 José F. Romaniello <[email protected]> > > proba así: >> <bag name="Actividades" table="LineasPlanActividad" >> cascade="all-delete-orphan" *inverse="true"*> >> >> >> El 27 de julio de 2010 10:35, Ezequiel Cozzolino < >> [email protected]> escribió: >> >> 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 >> > > -- > 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
