結果が限定された単純な Hibernate クエリを実行する次の 2 つの方法のいずれも、Sybase では機能しません。どちらもSybSQLException: Incorrect syntax near '@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 を入力していません (これは私の推測です)。私はどこでも検索しましたが、他の人も同様のエラーに遭遇しましたが、結果を制限しようとしたためではありません.
「select top 50 from Record」などの直接 SQL ステートメントを実行でき、それは完全に機能するので、使用しているバージョンの Sybase がその構文をサポートしていることはわかっています。
Hibernate 3.2 と Sybase ASE 15.0.2 を使用しています