Любой из следующих двух подходов к выполнению простого запроса Hibernate с ограниченными результатами не работает в Sybase.Они оба приводят к SybSQLException: неправильный синтаксис рядом с'@p0'.
Query q = session.createQuery( "from Record" );
q.setMaxResults( 50 );
q.list();
или
Criteria criteria = session.createCriteria( Record.class );
criteria.setMaxResults( 50 );
criteria.list();
Похоже, фактический SQL, сгенерированный в обоихпадеж выглядит как ...
select top ? record_id, etc...
и Sybase балансирует на?, который Hibernate не заполняет значением 50 (это мое предположение).Я искал везде, и в то время как другие столкнулись с подобной ошибкой, это не было связано с попыткой ограничить результаты.
Я могу выполнить прямой оператор SQL, такой как «выбрать топ 50 из записи», и он отлично работает, поэтому я знаю, что моя версия Sybase поддерживает синтаксис.
Я использую Hibernate 3.2и Sybase ASE 15.0.2