Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Hibernate (/JPA) serverseitiges Paging und MS SQL Server

Eine etwas späte Antwort, aber es kann hilfreich sein, also werde ich es posten. Hatte genau das gleiche Problem und Kopfschmerzen, um es aufzuspüren. Die Lösung besteht darin, org.hibernate.dialect.SQLServer2012Dialect zu verwenden das in Hibernate 4.3.0 enthalten ist. Die generierte Abfrage wird (einfügen eines echten Hibernate-Dumps ohne Spaltennamen und Aliase):

WITH query 
     AS (SELECT inner_query.*, 
                Row_number() 
                  OVER ( 
                    ORDER BY CURRENT_TIMESTAMP) AS __hibernate_row_nr__ 
         FROM   (SELECT TOP(?) <COLUMN_NAMES> AS <ALIASES>
FROM <TABLE_NAME>
) inner_query) 
SELECT <ALIASES>
FROM   query 
WHERE  __hibernate_row_nr__ >= ? 
       AND __hibernate_row_nr__ < ?

Beachten Sie die Verwendung der inneren Abfrage und Row_number() Funktion. Sie haben es endlich gelöst!