Hibernate 删除对象关联集合遇到的问题

今天遇到一个问题, 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(), 然后就删除成功了, 不知道为什么



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值