1

我正在做一个查询,该查询基于 row_number() 对 X 行进行排序和返回我正在使用 NHibernate 和 MSSQL,我正在尝试使用 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]

有谁知道如何使用 HQL 或 ICriteria(甚至更好)而不是普通的 SQL 来完成这项工作?这样做的原因是我想要一个与 SQLite 和 MS SQL Server 2005 兼容的查询,以便我可以使用 .SetMaxResult() og .SetFirstResult()

提前致谢!

4

2 回答 2

4

尽量避免在 nHibernate 中使用纯 SQL。

在 Criteria 对象上,使用 SetFirstResult() 和 SetMaxResult() 进行分页。

每页 10 条记录 ? 第一页是 criteria.SetFirstResult(0).SetMaxResult(10),第三页是 criteria.SetFirstResult(20).SetMaxResult(10)

始终使用正确的方言。例如,SQL Server 2008 比 SQL Server 2005 具有更多的分页功能。

于 2010-06-30T12:23:38.790 回答
1

这是一篇很棒的文章,可以做你想做的事 http://www.tobinharris.com/past/2008/10/20/almost-iqueryable-with-nhibernate-hql/

于 2011-08-19T13:39:35.030 回答