1

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

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

但是,这在旧版本的 SQL Server 中不起作用,因为不支持偏移量。我知道需要生成的 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 中执行此操作的最佳方法是什么?

4

1 回答 1

0

Querydsl 提供了三种不同的 SQLServer 方言

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

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

于 2013-10-30T19:22:33.370 回答