Lidt sent svar, men det kan være nyttigt, så jeg sender det. Havde præcis det samme problem og hovedpine til at spore det. Løsningen er at bruge org.hibernate.dialect.SQLServer2012Dialect
som er inkluderet i Hibernate 4.3.0. Genereret forespørgsel bliver (indsætter ægte Hibernate-dump uden kolonnenavne og aliaser):
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__ < ?
Bemærk brugen af indre forespørgsel og Row_number()
fungere. De fik det endelig løst!