1

古いバージョンの MS SQL Server で QueryDSL を使用してクエリの結果をページ分割するにはどうすればよいですか? Oracle および SQL Server 2012+ の場合、これを行うことができます。

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

ただし、オフセットがサポートされていないため、これは古いバージョンの SQL サーバーでは機能しません。生成する必要がある 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 は 3 つの異なる SQLServer ダイアレクトを提供します

  • SQLServerTemplates2005 より前の SQL Server バージョンの場合
  • SQLServerTemplates2005SQL Server 2005 および 2008 の場合
  • SQLServerTemplates2012SQL Server 2012 の場合

SQLServerTemplatesはオフセットをサポートしていませんが、他の 2 つはサポートしています

于 2013-10-30T19:22:33.370 に答える