我有一些实体(WarehouseTransactionGroup,WarehouseTransactionAttribute,AttributeValue)具有以下关系:
where h.Date_Created between (Sysdate - interval '15' minute) and (Sysdate - 4);
当我尝试删除WarehouseTransactionGroup类型的对象时,由于该对象在某些其他数据库记录中使用,它会因外键约束而自然失败。但是,Hibernate会清除属性字段中的数据。
我正在调用remove操作,即在事务中调用session.delete()。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
你shouldn't use CascadeType.ALL
for @ManyToMany
个关联。
您需要将级联更改为CascadeType.PERSIST, CascadeType.MERGE
:
@ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE}) @MapKeyColumn 私有地图属性;
删除如下:
WarehouseTransactionGroup wtg = ...;
attributes.clear();
em.remove(wtg);