2009-03-03 3 views
1

Используя стандартный пример NHibernate для кошек и котят, как использовать ICriteria для сортировки кошек на основе количества котенка? Например, я хочу сделать что-то вроде:Заказ по подсчету коллекции с использованием ICriteria & NHibernate

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

Кто-нибудь знает, как достичь этого?

ответ

1

В HQL вы можете сделать это следующим образом:

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

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

Это Java Hibernate, но почти то же самое (Проекция, AddOrder)

+0

Когда я проекция & AddOrder crit.SetProjection (Projections.Alias ​​(Projections.Count («Котята»), «kcnt»)). SetResultTransformer (CriteriaUtil.DistinctRootEntity) .List(); В списке всего 1 результат - целое! –

+0

Если вам нужна полная сущность плюс счетчик (*), это нелегко сделать ... см. Http://opensource.atlassian.com/projects/hibernate/browse/HHH-3537 –

Смежные вопросы