Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pagination côté serveur Hibernate (/JPA) et MS SQL Server

Réponse un peu tardive, mais ça peut être utile donc je vais la poster. J'ai eu exactement le même problème et un mal de tête pour le retrouver. La solution consiste à utiliser org.hibernate.dialect.SQLServer2012Dialect qui est inclus dans Hibernate 4.3.0. La requête générée devient (en collant le vrai vidage Hibernate sans noms de colonnes ni alias) :

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__ < ?

Notez l'utilisation de la requête interne et de Row_number() fonction. Ils l'ont finalement résolu !