Lite sent svar, men det kan vara till hjälp så jag lägger upp det. Hade exakt samma problem och huvudvärk att spåra det. Lösningen är att använda org.hibernate.dialect.SQLServer2012Dialect
som ingår i Hibernate 4.3.0. Genererad fråga blir (klistra in riktig Hibernate-dump utan kolumnnamn och 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__ < ?
Lägg märke till användningen av inre fråga och Row_number()
fungera. De löste det till slut!