2011-01-31 12 views
4

私は、Spring 2.5でJ2EEアプリケーションのためにHibernate 3.2をintailly使用していました。現在、私はhibernate 3.5(BigInt Identityサポート)の機能を望んでいました。私の質問と一緒に。hibernateのクロス・ジョインの問題

HQLクエリ: -

select table from tableVO table where tableVO.subTableVO.id=:tableVO.id 

SQLクエリ: - 私はクロスに参加することを見

select table_1_ID from table cross join subTable where subTable.id =table.id 

は、Sybase ASEによって受け入れられていない休止状態で行われています。これをどうすれば解決できますか?

答えて

1

あなたは、あなたが実行したい構文を入力する必要があり、あなたの方言クラスでhibernate.cfg

<property name="hibernate.dialect">com.YourProject.YourDialect</property> 

で冬眠方言

を変更することができます。 DB2

public class DB2390Dialect extends DB2Dialect 
{ 

    public String getIdentitySelectString() { 
     return "select identity_val_local() from sysibm.sysdummy1"; 
    }... 
} 

ため

例方言変更希望

これは

+0

? –

+0

@ user288794障害のあるSQLを生成するメソッドをオーバーライドする必要があります。生成された構文の方言クラスを調べてみてください。 –

+0

@ user288794追加情報が必要ですか? –

2

あなたはhibernate設定に設定されている方言を確認できます。 Sybase ASE 15.xを実行していると仮定します。見つけたように、Sybaseは(まだ)SybaseDialectが使用しようとしているCROSS JOINをサポートしていません。代わりに、SybaseASE157DialectまたはSybaseASE15Dialectを使用してください。

select table_1_ID from table, subTable where subTable.id =table.id 
+0

どうしたのですか? 1年半後にありがとうございます。 – jgitter

0

これは、Hibernateで暗黙的に結合されているバグです。あなたはエイリアシングによってそれを修正することができ、あなたの加入:私はこの上SybaseAnyWhereDialect.Anyのヒントを使用しています

select table from tableVO table 
join tableVO.subtableVO subtable 
where subtable.id=:tableVO.id 
関連する問題