Hibernate不会删除父但是移除儿童(或关系),当它不能删除,因为外键约束
我有一些实体(WarehouseTransactionGroup,WarehouseTransactionAttribute,的AttributeValue)有下列关系的母公司:Hibernate不会删除父但是移除儿童(或关系),当它不能删除,因为外键约束
@Entity public class WarehouseTransactionGroup extends MasterEntity {
@ManyToMany(cascade = CascadeType.ALL)
@MapKeyColumn
private Map<WarehouseTransactionAttribute, AttributeValue> attributes;
// Getter and setter
}
当我尝试删除WarehouseTransactionGroup类型的对象,由于外键约束,它自然会失败,因为该对象在其他数据库记录中使用。但是,Hibernate会清除属性字段中的数据。
我正在调用一个事务中的remove操作,即session.delete()。
为什么会发生这种情况,我该如何解决?
回答:
你shouldn't use CascadeType.ALL
for @ManyToMany
协会。
您需要级联更改为
CascadeType.PERSIST, CascadeType.MERGE
:@ManyToMany(级联= {CascadeType.PERSIST,CascadeType.MERGE}) @MapKeyColumn 私人地图属性;
的删除是这样的:
WarehouseTransactionGroup wtg = ...;
attributes.clear();
em.remove(wtg);
以上是 Hibernate不会删除父但是移除儿童(或关系),当它不能删除,因为外键约束 的全部内容, 来源链接: utcz.com/qa/258002.html