6

HQL クエリがあります。

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

どうすればそれを QueryOver に翻訳/変換できますか?

次の 1 つ:

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)

4

1 に答える 1

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();

お役に立てば幸いです。

于 2011-04-01T09:54:20.773 に答える