César Pistiner
2016-09-14 20:05:22 UTC
Hola gente,
Estoy teniendo un problema y no le encuentro la vuelta. Usando NHibernate
con Criteria Queries tengo una entidad que es cabecera-detalle y cuando
obtengo una lista en la cual debo condicionar el detalle me trae un objeto
(cabecera) por cada detalle que tenga. El ejemplo serÃa asÃ, basado en
movimientos de stock:
Tengo 2 movimientos:
- MOVIMIENTO 1
- MOVIMIENTO 2
Detalle de MOVIMIENTO 1:
- PRODUCTO A - ENTRADA x 10 - POSICION 001
- PRODUCTO A - ENTRADA x 20 - POSICION 002
Detalle de MOVIMIENTO 1:
- PRODUCTO B - ENTRADA x 10 - POSICION 001
- PRODUCTO B - ENTRADA x 20 - POSICION 002
Si obtengo una lista condicionando los movimientos con PRODUCTO A, estoy
recibiendo una lista que contiene 2 cabeceras, con 2 detalles cada una. Si
inspeccionó dicha lista veo que es el mismo movimiento (MOVIMIENTO 1)
duplicado.
Ese es el problema, el cual estoy resolviendo con agrupación luego de
obtener la lista.
El mapping contra los detalles lo tengo asÃ:
CABECERA
<bag name="Detalles" table="DetalleMovimiento" inverse="true"
cascade="all,delete-orphan" lazy="true">
<key column="IdMovimiento"/>
<one-to-many class="DetalleMovimiento"/>
</bag>
DETALLE
<many-to-one name="Movimiento" column="IdMovimiento" class="Movimiento"
foreign-key="FK_DetalleMovimiento_Movimiento"/>
Luego a través de Criteria Queries lo que hago es:
nhCriteria = nhCriteria.CreateCriteria("Detalles",
NHibernate.SqlCommand.JoinType.InnerJoin);
nhCriteria.Add(Restrictions.Eq("Producto", productoAFiltrar));
Eso es todo (creo), agradezco cualquier sugerencia o ayuda, tal vez es un
error común, las soluciones que encontré navegando no me dieron resultado.
Espero haber sido claro y desde ya agradezco el tiempo robado!
Aprovecho para saludarlos y agradecer todos los aportes que hacen.
César
Estoy teniendo un problema y no le encuentro la vuelta. Usando NHibernate
con Criteria Queries tengo una entidad que es cabecera-detalle y cuando
obtengo una lista en la cual debo condicionar el detalle me trae un objeto
(cabecera) por cada detalle que tenga. El ejemplo serÃa asÃ, basado en
movimientos de stock:
Tengo 2 movimientos:
- MOVIMIENTO 1
- MOVIMIENTO 2
Detalle de MOVIMIENTO 1:
- PRODUCTO A - ENTRADA x 10 - POSICION 001
- PRODUCTO A - ENTRADA x 20 - POSICION 002
Detalle de MOVIMIENTO 1:
- PRODUCTO B - ENTRADA x 10 - POSICION 001
- PRODUCTO B - ENTRADA x 20 - POSICION 002
Si obtengo una lista condicionando los movimientos con PRODUCTO A, estoy
recibiendo una lista que contiene 2 cabeceras, con 2 detalles cada una. Si
inspeccionó dicha lista veo que es el mismo movimiento (MOVIMIENTO 1)
duplicado.
Ese es el problema, el cual estoy resolviendo con agrupación luego de
obtener la lista.
El mapping contra los detalles lo tengo asÃ:
CABECERA
<bag name="Detalles" table="DetalleMovimiento" inverse="true"
cascade="all,delete-orphan" lazy="true">
<key column="IdMovimiento"/>
<one-to-many class="DetalleMovimiento"/>
</bag>
DETALLE
<many-to-one name="Movimiento" column="IdMovimiento" class="Movimiento"
foreign-key="FK_DetalleMovimiento_Movimiento"/>
Luego a través de Criteria Queries lo que hago es:
nhCriteria = nhCriteria.CreateCriteria("Detalles",
NHibernate.SqlCommand.JoinType.InnerJoin);
nhCriteria.Add(Restrictions.Eq("Producto", productoAFiltrar));
Eso es todo (creo), agradezco cualquier sugerencia o ayuda, tal vez es un
error común, las soluciones que encontré navegando no me dieron resultado.
Espero haber sido claro y desde ya agradezco el tiempo robado!
Aprovecho para saludarlos y agradecer todos los aportes que hacen.
César
--
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
---
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envÃa un correo electrónico a nhibernate-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-***@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
---
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envÃa un correo electrónico a nhibernate-hispano+***@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.