sql >> Databáze >  >> RDS >> Sqlserver

Hibernate (/JPA) stránkování na straně serveru a MS SQL Server

Trochu opožděná odpověď, ale může být užitečná, takže ji zveřejním. Měl úplně stejný problém a bolela ho hlava, abych to vystopoval. Řešením je použít org.hibernate.dialect.SQLServer2012Dialect který je součástí Hibernate 4.3.0. Vygenerovaný dotaz se stane (vložením skutečného výpisu stavu spánku bez názvů sloupců a 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__ < ?

Všimněte si použití vnitřního dotazu a Row_number() funkce. Konečně to vyřešili!



  1. 4 způsoby, jak změnit časové pásmo v Oracle

  2. auxService:mapreduce_shuffle neexistuje

  3. Oracle vrací stejný alias pro různé případy na select

  4. Datový model životního pojištění