4

Spring 2.5 で J2EE アプリケーションに Hibernate 3.2 を intailly を使用しています。

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 では受け入れられません。どうすればこれを修正できますか?

4

3 に答える 3

3

ハイバネート構成で設定した方言を確認してください。Sybase ASE 15.x で実行していると仮定します。お気づきのとおり、Sybase は (まだ) CROSS JOIN をサポートしていません。これは、SybaseDialect が使用しようとしているものです。代わりに、SybaseASE157DialectまたはSybaseASE15Dialectを使用してください。次のような構文が生成されます。

select table_1_ID from table, subTable where subTable.id =table.id
于 2012-11-29T20:33:46.140 に答える
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";
    }...
}

お役に立てれば

于 2011-01-31T08:28:23.580 に答える
0

これは、Hibernate の暗黙的な結合に関するバグです。結合をエイリアシングすることで修正できます。

select table from tableVO table
join tableVO.subtableVO subtable
where subtable.id=:tableVO.id 
于 2012-11-30T20:41:14.237 に答える