Hibernate Pagination-SQL Server «Недопустимое использование параметра первым в операторе FETCH» - PullRequest
0 голосов
/ 28 октября 2018

Я новичок в Hibernate, и недавно я сталкиваюсь с этой ошибкой, когда пытаюсь реализовать нумерацию страниц.
Это моя функция

public List<Gear> getAllGear() {
    List<Gear> gears = null;
    try {
        session.getTransaction().begin();
        String sql = "FROM Gear ORDER BY GearName ASC";
        Query query = session.createQuery(sql);

        query.setFirstResult(0);
        query.setMaxResults(20);

        gears = query.list();
        session.flush();
        session.getTransaction().commit();
    } catch (HibernateException ex) {
        if (session.getTransaction().isActive()) {
            session.getTransaction().rollback();
        }
        Logger.getLogger(GearDAO.class.getName()).log(Level.SEVERE, "Get Gear ERROR", ex);
    }
    return gears;
}

В консоли Hibernate:

Hibernate: select (--All fields of table Gear--) from GearBuilder.dbo.Gear gear0_ order by GearName ASC fetch first 20 rows only

28-Oct-2018 12:41:50.230 WARN [http-nio-8084-exec-177] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions SQL Error: 153, SQLState: S0002
28-Oct-2018 12:41:50.231 ERROR [http-nio-8084-exec-177] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions Invalid usage of the option first in the FETCH statement.
28-Oct-2018 12:41:50.251 SEVERE [http-nio-8084-exec-177] gear.GearDAO.getAllGear Get Gear ERROR
org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Где я могу пойти не так?Я использую Hibernate 4.3.1 и СУБД MS SQL Server 2012.

...