私のモデルには複数の PK (3) があり、Hibernate で Play フレームワークを使用しており、モデルによってマップされたテーブルは Sybase db に保存されています。
save()/find()/delete() が非常にうまく機能する Junit を作成しました。しかし、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 ステートメントにカンマを使用できません。コンマを削除して、ステートメントに 1 つの列のみを設定すると、リクエストは正常に実行されます。
私はどこか間違っていますか?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 フレームワーク 1.1.1 には、このメソッドが存在しない Hibernate 3.5.6 が組み込まれています...それが理由です!