我有一个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)
的子查询。
答案 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();
我希望它有用。