旧版SQL服务器的QueryDSL分页结果(限制/偏移)

时间:2013-10-30 15:35:41

标签: sql-server pagination querydsl

如何在旧版本的MS SQL Server中使用QueryDSL对查询结果进行分页?对于Oracle和SQL Server 2012+,我可以这样做:

query.offset(startIndex).limit(size);

但是,这在旧版本的SQL Server中不起作用,因为不支持偏移。我知道需要gerenated的SQL代码是这样的:

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
          FROM      Orders
          WHERE     OrderDate >= '1980-01-01'
        ) AS RowConstrainedResult
WHERE   RowNum >= 1
    AND RowNum < 20
ORDER BY RowNum

在QueryDSL中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

Querydsl提供三种不同的SQLServer方言

    对于2005年之前的SQL Server版本,
  • SQLServerTemplates
  • SQLServerTemplates2005适用于SQL Server 2005和2008
  • SQLServerTemplates2012 for SQL Server 2012

SQLServerTemplates不支持偏移,但其他两个支持