Joe*_*ner 2 sql hibernate hql sybase-ase
执行具有有限结果的简单Hibernate查询的以下两种方法之一在Sybase中不起作用.它们都会导致SybSQLException:'@ p0'附近的语法不正确.
Query q = session.createQuery( "from Record" );
q.setMaxResults( 50 );
q.list();
Run Code Online (Sandbox Code Playgroud)
要么
Criteria criteria = session.createCriteria( Record.class );
criteria.setMaxResults( 50 );
criteria.list();
Run Code Online (Sandbox Code Playgroud)
看来在这两种情况下生成的实际SQL看起来像......
select top ? record_id, etc...
Run Code Online (Sandbox Code Playgroud)
并且Sybase正在讨论?,Hibernate没有填充值50(这是我的猜测).我到处搜索,而其他人遇到了类似的错误,这不是因为试图限制结果.
我可以执行一个直接的SQL语句,例如'从Record中选择前50个',它运行得很好,所以我知道我的Sybase版本支持语法.
我正在使用Hibernate 3.2和Sybase ASE 15.0.2
也许您将Hibernate配置为使用错误的SQL方言.
它看起来HSQLDialect是唯一可以产生的方言,limit ? ?对于Sybase来说它绝对是一个错误的选择.
也可以看看: