2011-05-16 149 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进行删除。