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

Gut*_*tek 6 nhibernate hql queryover

我有一个HQL查询:

select max(l.Num) from SomeTable l group by l.Type, l.Iteration
Run Code Online (Sandbox Code Playgroud)

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

以下一个:

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

将生成SQL:

SELECT
    MAX(l.Num),
    l.Type,
    l.Iteration
FROM
    SomeTable l
GROUP BY
    l.Type,
    l.Iteration
Run Code Online (Sandbox Code Playgroud)

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

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

Fab*_*ber 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();
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助。