Nhibernate GroupBy несколько и граф - PullRequest
0 голосов
/ 26 мая 2011

Во-первых, я знаю, что несколько свойств GroubBy еще не реализованы.

Что я хочу сделать, это

SELECT count(*)
FROM ( 
    SELECT this_.SubmissionDate as y0_
    FROM   [Coupon] this_
    WHERE  this_.PaymentOrder_id is null 
    GROUP BY this_.SubmissionDate,
           this_.Deal_id
) AS query

лучшее, что у меня есть в Nhibernate, это

Session.QueryOver<Coupon>().Select(Projections.Group<Coupon>(e => e.SubmissionDate),Projections.Group<Coupon>(e => e.Deal.Id)).Future<object[]>().Count()

, который возвращает весь набор и затем считает его.

Я нашел этот и создал этот

var count = Session.CreateQuery("select count(*) from (select c.SubmissionDate from Coupon c where c.PaymentOrder.Id is null group by c.SubmissionDate, c.Deal.Id) as query").FutureValue<Int32>();

, который не работает.Бросает

Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 21

Exception Details: NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 21

еще исключение

[QuerySyntaxException: Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 21]
   NHibernate.Hql.Ast.ANTLR.ErrorCounter.ThrowQueryException() +118
   NHibernate.Hql.Ast.ANTLR.HqlParseEngine.Parse() +416

1 Ответ

0 голосов
/ 26 мая 2011

Вы пробовали что-то вроде этого, которое будет выполнять подсчет в памяти?

var count = Session.CreateQuery("select c.SubmissionDate from Coupon c where c.PaymentOrder.Id is null group by c.SubmissionDate, c.Deal.Id").ToList().Count;

Кажется, HQL не поддерживает подзапросы вне select и где: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-subqueries

В противном случаеВы можете создать хранимую процедуру и добавить ее в свое отображение: Правильное отображение NHibernate для хранимой процедуры?

...