Domanda

Ho chiesto una domanda simile 6 mesi fa che la risposta ancora non è stato o qualsiasi suggerimento fatto.

Qui è il problema. Il codice qui sotto sta tornando record duplicati. L'attuale set di record restituito sto lavorando con il Model.Product. La query sta esaminando il campo DateAdded entro tavolo ProductSkus per vedere se il prodotto dovrebbe mostrare. L'unico problema è se più di 1 ProductSkus corrispondono al requisito di un particolare prodotto ottengo record duplicati. Non posso avere questo. Mi interessa solo l'accesso ai dati contenuti nel Model.Product. Non Model.Product.ProductSkus.

Qualcuno ha funzionato in una situazione simile? Tutte le idee su come ottenere i risultati che sto cercando?

Grazie in anticipo.

ICriteria query = this.Session.CreateCriteria<Model.Product>();
query.CreateAlias("ProductSkus", "ProdSku", JoinType.InnerJoin)
     .AddOrder(new Order("ProdSku.DateAdded", false))
     .AddOrder(new Order("Name", true))
     .Add(Restrictions.Ge("ProdSku.DateAdded", myDate))
     .SetMaxResults(100);

risultato = query.List ();

È stato utile?

Soluzione

Si dovrebbe fare in modo che la query / criteri utilizza un 'resultransformer'. In questo caso, è necessario il DistinctRootEntityResultTransformer.

 query.SetResultTransformer(Transformers.DistinctRootEntity);

Oltre a questo, come è mappato tale associazione? E 'mappato come una borsa, o come un insieme?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top