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

Responder a