Hibernate不会删除父节点,但由于外键约束而无法删除父节点时删除子节点(或关系)

时间:2015-06-01 13:49:18

标签: java mysql hibernate jpa hibernate-mapping

我有一些实体(WarehouseTransactionGroup,WarehouseTransactionAttribute,AttributeValue)具有以下关系:

where h.Date_Created between (Sysdate - interval '15' minute) and  (Sysdate - 4); 

当我尝试删除WarehouseTransactionGroup类型的对象时,由于该对象在某些其他数据库记录中使用,它会因外键约束而自然失败。但是,Hibernate会清除属性字段中的数据。

我正在调用remove操作,即在事务中调用session.delete()。

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

shouldn't use CascadeType.ALL for @ManyToMany个关联。

  1. 您需要将级联更改为CascadeType.PERSIST, CascadeType.MERGE

    @ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})    @MapKeyColumn    私有地图属性;

  2. 删除如下:

    WarehouseTransactionGroup wtg = ...;
    attributes.clear();
    em.remove(wtg);