我的模型有多个 PK (3),我正在使用带有 Hibernate 的 Play Framework,并且我的模型映射的表存储在 Sybase 数据库中。
我做了一个Junit,其中save()/find()/delete() 工作得很好。但是 count() 方法不会,它会抛出 SqlGrammarException。通过设置jpa.debugSQL=true
,我捕获了 Hibernate 生成的 sql 请求,这是不正确的:
select count((systempara0_.interface, systempara0_.name, systempara0_.origine)) as col_0_0_ from system_parameters systempara0_
Sybase 不允许在 count 语句中使用逗号,如果我删除它们并在语句中只设置一列,则请求运行良好。
我在某个地方错了吗?Hibernate 中是否存在错误?有解决方法吗?
提前致谢
Sybase Version : Adaptive Server Enterprise/15.0.3
Play Framework 1.1.1
更新:
从休眠 Javadoc 中,我注意到类中调用supportsTupleCounts()
了一个方法SybaseASE15Dialect
,该方法返回 false。
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/dialect/Dialect.html#supportsTupleCounts ()
但是 Play framework 1.1.1 嵌入了 Hibernate 3.5.6,其中不存在此方法......这就是原因!