0

私は休止状態で次のマッピングを持っています:

    <class name="com.foo.bulk_delete.test3.lim.bl.pom.impl.P4" table="P4_BDELETE">
    <list lazy="false" fetch="select" batch-size="25" name="strings" table="L_st_49eea" >
        <key>
            <column name="f_oid$1" index="I_oid$_49eea" sql-type="char(35)"/>
        </key>
        <index column="s_idx$"/>
        <element type="VarcharStringType">
            <column name="s_elem$_5eb03"  length="512"/>
        </element>
    </list>
</class>

hqlのすべてのP4要素を削除したい場合は、次のようなことを行います

delete from com.foo.bulk_delete.test3.lim.bl.pom.impl.P4 p4

しかし、内部の「L_st_49eea」テーブルを削除する必要があるため、明らかに制約違反の例外がありますが、hqlでそれを行う方法がわかりません。

4

1 に答える 1

1

HQLだけでこれを行うことはできません。最初に参照されたエンティティを削除してから、親エンティティを削除する必要があります。
外部キー制約とともに削除カスケードを使用することをお勧めします。そうすれば、親の単純なHQLを介して削除できます。

于 2011-05-16T15:33:02.307 に答える