Fabio:

Me estas diciendo que no puedo usar un list?

Entonces no puedo tener una colección ordenada con nhibernate con list?

bag soporta ordered collections? tengo que hacerlo manual?



--
Roberto Ramírez

2010/2/18 Fabio Maulo <[email protected]>

> No leí todo el thread solo contesté a lo ultimo que envió Roberto.
>
> El 18 de febrero de 2010 14:15, José F. Romaniello <[email protected]
> > escribió:
>
> Robrto:
>>    Me estas charlando? te mande todo el mapping de la propiedad
>> exactamente como lo tenias que pegar, y pusiste el atributo en el otro
>> extremo de la relación, en cualquier lado. Lee bien mis mails anteriores.
>>
>>
>> Fabio:
>>   No me cuenta que era un list.
>>
>> El 18 de febrero de 2010 14:05, Fabio Maulo <[email protected]>escribió:
>>
>> http://nhforge.org/doc/nh/en/index.html#collections-bidirectional
>>>  <http://nhforge.org/doc/nh/en/index.html#collections-bidirectional>Please
>>> note that NHibernate does not support bidirectional one-to-many associations
>>> with an indexed collection (list, map or array) as the "many" end, you have
>>> to use a set or bag mapping.
>>>
>>> El 18 de febrero de 2010 13:46, Roberto Ramírez <[email protected]
>>> > escribió:
>>>
>>> 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
>>>>
>>>
>>>
>>>
>>> --
>>> Fabio Maulo
>>>
>>>  --
>>> 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
>>
>
>
>
> --
> Fabio Maulo
>
>  --
> 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