0

私のモデルには複数の 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 が組み込まれています...それが理由です!

4

1 に答える 1

1

私の知る限り、方言ファイルをダウングレードできます。いくつかのパッチが作成されているため、プレイ中の休止状態のバージョンを変更することはできません。

于 2011-02-12T18:49:21.473 に答える