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

-- 
-- 
Para escribir al Grupo, hágalo a esta dirección: 
NHibernate-Hispano@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+unsubscr...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Responder a