useScrollableResultSetToSkip not used

Description

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.

Environment

JBoss 7.1.1.Final, SQLServer 2008 R2

Assignee

Unassigned

Reporter

Anthony Ogier

Fix versions

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Blocker
Configure