分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

解决hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted object from associa

发布时间:2023-09-06 01:47责任编辑:彭小芳关键词:暂无标签

今天在做项目时,需要删除一个对象,由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了

deleted object would be re-saved by cascade (remove deleted object from associations)

异常,在各种google、百度后,发现网上大致有几种方法解决这个问题:

 

方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)

方法2 在many-to-one方增加cascade 但值不能是none  (缺点:子对象也级联到父对象,删除子对象会将父对象一并删除,也不可取)

方法3(亲测成功,而且很方便),先看下面代码:

order = (Order) session.get(Order.class, 2);
             
order.getCustormer().getOrders().remove(order);
             
order.setCustormer(null);
             
session.delete(order);

order是多的那一方,如果要删除一个order对象,直接调用session.delete()方法肯定就会报开头那个对象

为了解决这个问题,就可以先得到与该order对象对应的一的那一方(即customer对象),然后先将该order对象从customer对象中删除,并且将该order对象的customer对象设置为null,这样再执行删除时就不会出现那个异常了。

解决hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted object from associa

原文地址:https://www.cnblogs.com/silentmuh/p/8656176.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved