Lo intenté asi como mencionas José, pero al hacer BuildSessionFactory() me
lanza la siguiente excepcion:

Core.DetalleFactura.hbm.xml(41,111): XML validation error: No se ha
declarado el atributo 'inverse'.

Ahora, deje la responsabilidad de ejecutar los query's de SQL al list de mi
mapping Factura y no al <many-to-one> del DetalleFactura con el atributo
"inverse" seteado a true y funciono el delete:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core"
namespace="Core">
  <class name="Factura" table="tblFacturas" lazy="false">
    <id name="Id" column="id" type="System.Int64" unsaved-value="0">
      <generator class="identity" />
    </id>
    <many-to-one name="Cliente" class="Cliente" column="idCliente"
not-null="true" cascade="none"></many-to-one>
    <list name="Detalle" table="tblDetalles" cascade="all-delete-orphan"
lazy="false" *inverse="true"*>
      <key column="idFactura"/>
      <index column="orden"/>
      <one-to-many class="DetalleFactura"></one-to-many>
    </list>
  </class>
</hibernate-mapping>

Para llegar a esa deducción estuve leyendo un poco de aquí:
http://simoes.org/docs/hibernate-2.1/155.html

Si lo crees conveniente o no estaré considerando algo mas? En realidad no
alcanzo a comprender al 100% el uso de inverse.

Gracias.

--
Roberto Ramírez

2010/2/18 José F. Romaniello <[email protected]>

> Lo que te decía antes era:
>  <many-to-one name="Factura" class="Factura" column="idFactura"
> not-null="false" cascade="none" *inverse="true"*></many-to-one>
>
> El 18 de febrero de 2010 11:58, Roberto Ramírez 
> <[email protected]>escribió:
>
> Buenos días José, Fabio, gracias por atender.
>>
>> La parte del mapping del detalle lo tengo escrito de la siguiente manera:
>>
>> <?xml version="1.0" encoding="utf-8" ?>
>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core"
>> namespace="Core">
>>   <class name="DetalleFactura" table="tblDetalles" lazy="false">
>>      <id name="Id" column="id" type="System.Int64" unsaved-value="0">
>>       <generator class="identity" />
>>     </id>
>>     <property name="Orden" column="orden" type="System.Int32"
>> not-null="false"></property>
>>     <many-to-one name="Articulo" class="Articulo" column="idArticulo"
>> not-null="true" cascade="none"></many-to-one>
>>     <many-to-one name="Factura" class="Factura" column="idFactura"
>> not-null="false" cascade="none"></many-to-one>
>>   </class>
>> </hibernate-mapping>
>>
>> Aprecio la ayuda...
>>
>> =)
>>
>> --
>> Roberto Ramírez
>>
>> 2010/2/18 José F. Romaniello <[email protected]>
>>
>> manda el mapping de detalle de factura.. especialmente la parte del
>>> many-to-one.
>>> Me huele a que le falta un inverse=true en el many to one.
>>>
>>>
>>> El 17 de febrero de 2010 22:53, Roberto Ramírez <[email protected]
>>> > escribió:
>>>
>>>> Buenas tardes, otra vez aqui dando lata:
>>>>
>>>> Hace unos días, en este thread
>>>> http://groups.google.com/group/nhibernate-hispano/browse_thread/thread/187664b60db361a5
>>>>  había hablado
>>>> sobre un modelo Factura ==> Detalle y ahora tengo otro problemita por
>>>> resolver, agradecería mucho la opinión de todos ustedes.
>>>>
>>>> Cuando guardo la factura con su detalle, requiero que mi lista de
>>>> detalles este ordenada usando list ya que según el post de ayende (
>>>> http://ayende.com/Blog/archive/2009/06/02/nhibernate-mapping-ltlistgt.aspx),
>>>> mapear mi lista como list, me permite ordenar de manera automática
>>>>
>>>> Pero también puedo eliminar mi factura borrando en cascada todo su
>>>> detalle, solo que al final del request cuando ejecuto el commit, nhibernate
>>>> me lanza la siguiente excepción:
>>>>
>>>> session.Delete(Factura);
>>>>
>>>> "could not delete collection: [Core.Factura.Detalle#72][SQL: UPDATE
>>>> tblDetalles SET idFactura = null, orden = null WHERE idFactura = @p0]"
>>>>
>>>> Mi mapping:
>>>>
>>>> <?xml version="1.0" encoding="utf-8" ?>
>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core"
>>>> namespace="Core">
>>>>   <class name="Factura" table="tblFacturas" lazy="false">
>>>>     <id name="Id" column="id" type="System.Int64" unsaved-value="0">
>>>>       <generator class="identity" />
>>>>     </id>
>>>>     <many-to-one name="Cliente" class="Cliente" column="idCliente"
>>>> not-null="true" cascade="none"></many-to-one>
>>>>     <list name="Detalle" table="tblDetalles" cascade="all-delete-orphan"
>>>> lazy="false">
>>>>       <key column="idFactura"/>
>>>>       <index column="orden"/>
>>>>       <one-to-many class="DetalleFactura"></one-to-many>
>>>>     </list>
>>>>   </class>
>>>> </hibernate-mapping>
>>>>
>>>> Yo entiendo que al final nh lo que pretende realizar es un update sobre
>>>> mi tblDetalles para ordenar, pero al ya no existir el detalle pues lanza la
>>>> excepción.
>>>>
>>>> Agradezco la ayuda que me puedan brindar.
>>>>
>>>> Uso la versión 2.1.0.400 de la librería.
>>>> --
>>>> Roberto Ramírez
>>>>
>>>> --
>>>> 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
>

-- 
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