Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ibernazione (/JPA) paginazione lato server e MS SQL Server

Risposta un po' in ritardo, ma può essere utile quindi la posterò. Aveva lo stesso identico problema e un mal di testa per rintracciarlo. La soluzione è usare org.hibernate.dialect.SQLServer2012Dialect che è incluso in Hibernate 4.3.0. La query generata diventa (incollando il dump di Hibernate reale senza nomi di colonna e 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__ < ?

Nota l'uso della query interna e di Row_number() funzione. Alla fine hanno risolto!