2010-05-13 5 views
-1

CodenHibernate Requête distincte

IList VendorList;

requête générée S'il vous plaît, aidez-moi

SELECT this_.Sp as HCO1_25_0_, 
     this_.NID as Network2_25_0_, 
     this_.Vname as HCO3_25_0_ 
FROM  HCO_V_Lookup this_ 
WHERE this_.NID = 5 /* @p0 */ 
     and not (this_.VNAME = ' ' /* @p1 */) 
ORDER BY this_.VNAME asc 
+0

Ce n'est pas même une question –

Répondre

0
ICriteria criteria = session.CreateCriteria(typeof(Person)); 
criteria.SetProjection(
    Projections.Distinct(Projections.ProjectionList() 
     .Add(Projections.Alias(Projections.Property("FirstName"), "FirstName")) 
     .Add(Projections.Alias(Projections.Property("LastName"), "LastName")))); 

criteria.SetResultTransformer(
    new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Person))); 

IList people = criteria.List(); 
0

Je suppose que vous vous demandez pourquoi le DISTINCT ne semble pas dans le SQL. C'est parce qu'il est appliqué dans votre requête de critères en tant que transformateur de résultat - les résultats de la requête SQL sont filtrés pour les rendre distincts après l'exécution de la requête.

+0

j'ai changé mon code et maintenant je suis en mesure tro voir le distincte dans la requête ajouté .SetProjection (Projections.Distinct (Projections.ProjectionList(). Ajouter (. Projections.Property ("NetworkRunId")) Ajouter (Projections.Property ("VendorName")))) enlevé .SetResultTransformer (nouveau NHibernate.Transform.DistinctRootEntityResultTransformer() Je reçois une exception eRREUR: La valeur "System.Object []" n'est pas de type "Common.In terface.Domain.Common.IVendorLookup "et ne peut pas être utilisé dans cette collection générique. Nom du paramètre: valeur – bharat

+0

J'ai trouvé que le problème est lorsque la requête est générée avec DISTINCT je reçois une exception. – bharat

+0

si j'utilise ceci, j'obtiens un seul ensemble de résultats crit.SetResultTransformer (new NHibernate.Transform.DistinctRootEntityResultTransformer()); – bharat