2009-03-03 9 views
1

En utilisant l'exemple NHibernate standard de chats et de chatons, comment utiliser ICriteria pour trier les chats en fonction du nombre de chatons? Par exemple, je veux faire quelque chose comme:Commander par collection compter avec ICriteria & NHibernate

ICriteria crit = Session.CreateCriteria(typeof(Cat)); 
return crit.Order(Order.Asc("**Kittens.Count**")); 

Quelqu'un sait comment y parvenir?

Répondre

1

En HQL vous pouvez le faire comme ceci:

select cat 
from Eg.Cat cat 
join cat.Kittens kitten 
group by cat 
order by count(kitten) asc 
1

Voir http://forum.hibernate.org/viewtopic.php?p=2401219

Il est Java Hibernate, mais presque la même chose (Projection, AddOrder)

+0

Quand je fais la projection et AddOrder crit.SetProjection (Projections.Alias ​​(Projections.Count ("Kittens"), "kcnt")). SetResultTransformer (CriteriaUtil.DistinctRootEntity) .List(); La liste n'a que 1 résultat - un nombre entier! –

+0

Si vous voulez que l'entité complète plus un nombre (*), ce n'est pas facilement réalisable ... voir http://opensource.atlassian.com/projects/hibernate/browse/HHH-3537 –

Questions connexes