0

我的模型有多个 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,其中不存在此方法......这就是原因!

4

1 回答 1

1

据我所知,您可以降级方言文件。你不能改变游戏中的休眠版本,因为他们做了一些补丁。

于 2011-02-12T18:49:21.473 回答