If I use org.hibernate.dialect.SQLServerDialect with SQLServer2008 in order to paginate correctly (see which was my previous errors, but this time I use a simple @Entity without any @Formula on it), I've got a "The requested operation is not supported on forward only result".
Here is the stack :
It seems to be a problem in org.hibernate.loader.Loader because if I put a breakpoint in line 1739 :
Here are the values of the variables :
useLimit : true
hasFirstRow : true
useLimitOffset : false
canScroll : true
useScrollableResultSetToSkip : true
scrollMode : null // I think, here it must have been ScrollMode.SCROLL_SENSITIVE
Actually, if I replace the value of scrollMode from null to ScrollMode.SCROLL_SENSITIVE just before the excecution of line 1739, then the error doesn't occure.
So there must be a problem in private ScrollMode getScrollMode(boolean scroll, boolean hasFirstRow, boolean useLimitOffSet, QueryParameters queryParameters) (line 1685) which doesn't use that useScrollableResultSetToSkip variable...
Here it's a problem with SQLServerDialect, but it could be another dialect which would want useScrollableResultSetToSkip to be taken into account (that is to say hasFirstRow = true, useLimit = true, useLimitOffset = false (dialect.supportsLimitOffset = false), getFactory().getSettings().isScrollableResultSetsEnabled() = true), because later getResultSet() method (line 1982) calls advance() method if !dialect.supportsLimitOffset() || !useLimit( selection, dialect ) which will finally call ResultSet.absolute which will throw that exception because the ResultSet wasn't prepared with ScrollMode SENSITIVE.
JBoss 7.1.1.Final, SQLServer 2008 R2