今天遇到一个问题, Product 类中有一个集合属性,
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TLeaseProduct")
// @OneToMany(cascade = {CascadeType.MERGE, CascadeType.REMOVE}, fetch = FetchType.LAZY, mappedBy = "TLeaseProduct")
public Set<LeaseProductCategoryRel> getTLeaseProductCategoryRels() {
return this.TLeaseProductCategoryRels;
}
我在修改product对象时, 采用的是先将集合中的数据全部删除, 再重新保存新的数据, 但是在删除的时候抛出异常
deleted object would be re-saved by cascade (remove deleted object from associations): [com.hitv.lease.bean.mapping.LeaseProductCategoryRel#40]
删除代码如下
//保存产品与类别的关联关系
Set<LeaseProductCategoryRel> categoryRels = leaseProduct.getTLeaseProductCategoryRels();
for(LeaseProductCategoryRel rel : categoryRels){
rel = categoryRelDao.getById(rel.getProductCategoryRelId());
categoryRelDao.delete(rel);
}
修改product的基本信息是在删除之前, 但是在删除的时候会报上面你的异常
后来在for循环之后加了一句 categoryRels .clear(), 然后就删除成功了, 不知道为什么