2009-03-03 20 views
1

標準のNHibernateのCatsとKittensの例を使用して、ICriteriaを使用してKitten数に基づいてCatsをソートするにはどうすればよいですか?たとえば、私は次のようなことをしたい:ICriteria&NHibernateを使用してコレクション数で並べ替え

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

誰でもこれを達成する方法を知っていますか? HQLで

答えて

1

あなたはこのようにそれを行うことができます。

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

それはJavaのHibernateのが、http://forum.hibernate.org/viewtopic.php?p=2401219

を参照してください、ほぼ同じもの(投影、AddOrder)

+0

私が行うと、投影&AddOrder setResultTransformer(CriteriaUtil.DistinctRootEntity).List(); Crit.SetProjection(Projections.Alias(Projections.Count( "Kittens")、 "kcnt" リストには1つの結果しかありません - 整数です! –

+0

完全なエンティティとカウント(*)が必要な場合は、簡単に実行できません。http://opensource.atlassian.com/projects/hibernate/browse/HHH-3537を参照してください。 –

関連する問題