Всеки от следните два подхода за изпълнение на проста заявка за Hibernate с ограничени резултати не работи в Sybase. И двете водят до SybSQLException: Неправилен синтаксис близо до '@p0'.
Query q = session.createQuery( "from Record" );
q.setMaxResults( 50 );
q.list();
or
Criteria criteria = session.createCriteria( Record.class );
criteria.setMaxResults( 50 );
criteria.list();
Изглежда действителният SQL, генериран и в двата случая, изглежда...
select top ? record_id, etc...
и Sybase се противопоставя на ?, който Hibernate не попълва със стойност 50 (това е моето предположение). Търсих навсякъде и докато други са срещали подобна грешка, тя не се дължи на опит за ограничаване на резултатите.
Мога да изпълня директен SQL оператор като „изберете топ 50 от Record“ и той работи перфектно, така че знам, че моята версия на Sybase поддържа синтаксиса.
Използвам Hibernate 3.2 и Sybase ASE 15.0.2