`

转:hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted ob

阅读更多

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

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 = getHibernateTemplate().get(Order.class, id);      
order.getCustormer().getOrders().remove(order);        
order.setCustormer(null);        
getHibernateTemplate().delete(order);

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

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

 

参考:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/02/2940290.html#3186025

分享到:
评论

相关推荐

    Hibernate 删除出现异常的解决方案.doc

    在使用Hibernate进行数据库操作时,有时会遇到一种异常情况,即在尝试删除一个对象时,系统抛出"deleted object would be re-saved by cascade (remove deleted object from associations)"的异常。这个异常通常发生...

    Laravel开发-laravel-cascade-deletes

    在Laravel框架中,"级联删除"是一种数据库操作机制,允许当删除一个记录时,与其相关的所有关联记录也会被自动删除。这个功能在数据管理中非常有用,特别是在处理具有多对一或一对多关系的数据库模式时。本文将深入...

    wechat-deleted-friends-master

    《微信好友恢复:深入解析“wechat-deleted-friends-master”项目》 在我们的日常生活中,微信作为一款全球广泛使用的社交应用,已经成为了我们联系亲朋好友、进行商务沟通的重要工具。然而,有时由于误操作或者...

    Exploring the location of object deleted by seam-carving

    Exploring the location of object deleted by seam-carving

    hibernate的包

    10. **实体生命周期**:Hibernate定义了对象的生命周期,包括瞬态(Transient)、持久化(Persistent)、托管(Managed)、脱管(Detached)和已删除(Deleted)等状态,帮助开发者理解对象在整个应用中的状态变化。...

    EurekaLog_7.5.0.0_Enterprise

    30)..Fixed: Leak of EurekaLog exception information object 31)..Fixed: Wrong chaining exceptions inside GetMem/FreeMem 32)..Fixed: Memory leak after low-level unhook of function 33)..Fixed: Re-...

    alfresco-deleted-content-store-cleaner:Alfresco删除的Content Store Cleaner作业

    Alfresco删除的内容商店清洁程序 该加载项提供了一项工作,以删除“已删除的内容存储”中的废弃文件。 从Alfresco 5.2(201707 GA)开始,已提供开箱即用的Trashcan Cleaner作业,尽管默认情况下是禁用的。 这项...

    RemoveSymantecMacFiles.command

    that would be deleted. No note is added if a file is not supposed to be removed by Symantec Uninstaller. -f Do not show files as they are removed. If -f is not specified, file names are shown as ...

    React 脚手架的安装方法

    react 脚手架的安装方法 安装的方法都与个人的使用习惯相关,以下就介绍两种使用较多的 node环境下 方法一: 全局安装 npm install create-react-app -g 还可以查看版本号 create-react-app -V ...

    hibernate经典源码

    8. **实体状态管理**:Hibernate将实体的状态分为瞬时(Transient)、持久化(Persistent)、脱管(Detached)和已删除(Deleted),理解这些状态及其转换,有助于避免常见的数据问题。 9. **批量操作**:批量插入...

    SQL Inserted和deleted详解

    - **定义**:当执行 DELETE 或 UPDATE 操作时,所有即将被删除或已经存在的旧行都会存储在 `Deleted` 表中。 - **用途**: - **恢复数据**:如果误删了某些记录,可以通过 `Deleted` 表恢复数据。 - **审计跟踪**...

    hibernate in action

    《Hibernate in Action》是Java开发领域中一本经典的J2EE教程,主要聚焦于ORM(对象关系映射)框架Hibernate的深度解析与实践应用。Hibernate作为Java世界中的持久化框架,极大地简化了数据库操作,使得开发者可以...

    Windows 2008 R2常用的25个PowerShell命令

    5. **强制删除文件或目录:** `Remove-Item -Path C:\tobedeleted -Recurse -Force`命令允许你在不提示确认的情况下删除指定的文件或目录及其子目录,这对于清理不再需要的大文件或目录树非常方便。 6. **获取操作...

    SQLite-Deleted-Records-Parser, 在SQLite数据库中,用于恢复已经删除项目的脚本.zip

    SQLite-Deleted-Records-Parser, 在SQLite数据库中,用于恢复已经删除项目的脚本 SQLite解析器在SQLite数据库中恢复删除条目并将输出放入TSV文件或者文本文件( R ) 中的脚本sqlparse.py的###Usagesqlparse.py -f/...

    QT creator实现(简易版)计算器

    当你按下计算器上的按钮时,按钮对象会发出一个信号,而这个信号可以连接到槽函数,执行相应操作。例如,数字按钮的点击事件可以连接到`setNumber()`,运算符按钮的点击事件可以连接到`setOperator()`。最后,等号...

    To be deleted

    在IT行业中,文件管理是日常操作的重要组成部分,无论是个人用户还是企业用户,都需要掌握如何有效地创建、保存、移动以及删除文件。在这个场景中,我们关注的是如何删除一个名为"StudentManagement"的压缩包文件。...

    应用Dephi 开发佳能照相机API

    {****************************************************************************** * * ... Gets an indexed child object of the designated object. Parameters: In: inRef - The reference...

    delphi编译错误.txt

    37. **Constant object cannot be passed as var parameter** - **含义**: 无法将常量对象作为变参传递。 - **解决办法**: 使用可变对象或调整参数类型。 38. **Constant or type identifier expected** - **...

    2BE_DELETED_vdr-plugin-arghdirector:暂时的? 被遗弃的家? VDR插件Arghdirector-开源

    "2BE_DELETED"可能表示这个项目曾经考虑过删除,但最终并没有。"暂时的? 被遗弃的家?"这部分暗示了该项目可能处于不确定状态,可能是因为开发者对项目的维护或更新出现了问题,或者项目的发展方向有所变化。 **...

    hibernate错误汇总

    错误十:Exception in thread "main" org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) 错误原因:这个异常通常发生在并发...

Global site tag (gtag.js) - Google Analytics