2011-05-16 189 views
0

我在休眠以下映射:休眠刪除使用HQL

<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中執行它。

回答

1

你不能通過HQL單獨做到這一點..你必須先刪除引用的實體,然後刪除父實體。
我會建議使用刪除級聯以及外鍵約束,然後您可以通過父級上的簡單HQL進行刪除。