如何将HQL与Group By转换为QueryOver?

时间:2011-03-31 21:22:09

标签: nhibernate hql queryover

我有一个HQL查询:

select max(l.Num) from SomeTable l group by l.Type, l.Iteration

如何将其翻译/转换为QueryOver?

以下一个:

var grouped = session.QueryOver<SomeTable>()
    .SelectList(l => l
      .SelectGroup(x => x.Type)
      .SelectGroup(x => x.Iteration)
      .SelectMax(x => x.Num));

将生成SQL:

SELECT
    MAX(l.Num),
    l.Type,
    l.Iteration
FROM
    SomeTable l
GROUP BY
    l.Type,
    l.Iteration

这不是我所期望的 - 我不想在Select中使用Type和Iteration。

我正在使用该查询作为select z from c where z IN (subquery)的子查询。

1 个答案:

答案 0 :(得分:0)

尝试使用此声明,我使用了Aliases和UnderlyingCriteria

SomeTable someTb = null;

var grouped = session.QueryOver<SomeTable>(() => someTb)
                .SelectList(l => l.SelectMax(() => someTb.lnum))
                .UnderlyingCriteria.SetProjection(
                                   Projections.Group(() => someTb.Type)
                                   ,Projections.Group(() => someTb.Iteration))
                .List();

我希望它有用。

相关问题