row_number() に基づいて X 行を並べ替えて返すクエリを作成しています。MSSQL で NHibernate を使用しており、CreateSQLQuery を使用してページングを機能させようとしています。次のクエリがあります。
select s.*
from(
select distinct release.[stop], survey.SurveyId, survey.Created, survey.CopyOfId, survey.DesignTemplateId, survey.UserId, survey.Template, [Row] = Row_Number() over (order by survey.[SurveyId])
from Survey as survey
inner join Release as release on release.SurveyId = survey.SurveyId
group by survey.SurveyId
, survey.Created
, survey.CopyOfId
, survey.DesignTemplateId
, survey.UserId
, survey.Template
, release.[stop]
) as s
where s.[Row] >= 0 and s.[Row] <= 20
order by s.[stop]
プレーンSQLの代わりにHQLまたはICriteria(さらに良い)を使用してこれを機能させる方法を知っている人はいますか? この理由は、SQLite と MS SQL Server 2005 の両方と互換性のあるクエリが必要で、.SetMaxResult() または .SetFirstResult() を使用できるようにするためです。
前もって感謝します!