Запрос критериев NHibernate, суммирующий поле из коллекции - PullRequest
2 голосов
/ 24 ноября 2010

У меня есть простое отношение «один ко многим» между таблицей Order и строкой таблицы.

Я хочу запрос, который сообщает о каждой сущности Order и сумме поля Line.Value.

Я могу сделать это на HQL:

select order, sum(line.Value) as LineValue 
from Order as order   
  join order.Lines as line
group by order

Пока все хорошо.Когда я запускаю это, я получаю Список массивов объектов, где [0] - это Порядок, а [1] - это сумма значений строки.

Как мне сделать то же самое с API критериев?

Самое близкое, что я могу получить, это что-то вроде:

session.CreateCriteria(typeof(Order))
  .CreateAlias("Lines", "l")
  .SetProjection(Projections.ProjectionList()
     .Add(Projections.GroupProperty("Id"))
     .Add(Projections.GroupProperty("Customer"))
     /* ... ditto for each Order field ... */
     .Add(Projections.Sum("l.Value"))

Я должен вручную добавить каждое свойство из ордера, который я хочу вернуть.Как мне указать, что я хочу сгруппировать по всем полям Order?

...