Hibernate:deleted object would be re-saved by cascade (remove deleted object from associations): []

Hibernate多表关联的时候的异常:deleted object would be re-saved by cascade (remove deleted object from associations): []。

【产生原因】表之间的一对多(多对一)关联,两种情况:双表一对多多对一,单表自关联一对多多对一。表现为:删除“多”的一方的条目的时候出现这个异常。

【具体环境背景】楼主是在单表自关联(双向一对多多对一)出现的,建表细节:

@Entity
public class Department {

    private Long id;
    private Set<User> users = new HashSet<User>();
    private Department parent;
    private Set<Department> children = new HashSet<Department>();
    private String name;
    private String description;

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    @ManyToOne(cascade=CascadeType.MERGE)
    @JoinColumn(name="parent_id")
    public Department getParent() {
        return parent;
    }

    public void setParent(Department parent) {
        this.parent = parent;
    }

    @OneToMany(mappedBy="parent",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    public Set<Department> getChildren() {
        return children;
    }

    public void setChildren(Set<Department> children) {
        this.children = children;
    }
}

可见是Department部门表的自关联,每个部门都有一个上级部门和一个下级部门。我们理想状态的删除是:删除一个部门,1、它所有的下级部门级联删除,2、所有的上级部门不发生任何变化。

【解决方法!!!】由异常信息得知:deleted object would be re-saved by cascade (remove deleted object from associations)—->删除掉的对象将会被级联第二次保存(从绑定的联系上移除已经被删除的对象)。这说明我们已经做到了删除但是却由于级联(cascade)的原因,删除的对象又被利用了等等……,所以要做的是解决办法是:把@OneToMany里的cascade=CascadeType.ALL改成cascade=CascadeType.REMOVE。其他无关。

**【总结】**1、善于阅读思考异常内容。

2、cascade=CascadeType.ALL慎用,无论是在Many的一方还是One的一方。

3、当然,扎实基础是关键。

时间: 2024-10-12 00:25:47

Hibernate:deleted object would be re-saved by cascade (remove deleted object from associations): []的相关文章

Server Error in &#39;/&#39; Application.Object reference not set to an instance of an object.

这个错误是数据库角色权限造成的 只选中db.owner就可以了 Server Error in '/' Application.Object reference not set to an instance of an object.,布布扣,bubuko.com Server Error in '/' Application.Object reference not set to an instance of an object.

ArcGIS AddIN异常之:object reference not set to an instance of an object

异常出现在 frmDownload frd = new frmDownload(); frd.ShowDialog(); 在ArcMap中能正常弹出窗体,点击按钮时显示此异常:object reference not set to an instance of an object 网上检索后,基本给的解释都是对象没有实例化,可对象明明实例化了! 想不明白,清理了一下解决方案,然后重新编译生成,再运行就OK 可能原因:由于电脑上之前有过此AddIN插件,当时功能模块没有写完.后来写完后,在目标电脑

[Bug]Object reference not set to an instance of an object.

引言 今天在客户这儿,由一个问题导致,需求的变化,不得不修改代码,在记录日志中出现该问题. 原因 通过id查找相关信息,没有判断是否为null,集合是否有数据. Object reference not set to an instance of an object. 翻译:未将对象引用设置到对象的实例. 总结 这个错误在开发中最常见,由于代码不严谨造成,要考虑到为null的情况,不要嫌麻烦,你现在嫌麻烦,将来麻烦嫌弃你..... [Bug]Object reference not set to

Sass Loader报错:ValidationError: Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.

在vue.config.js中引入sass全局配置后报错vue.config.js代码如下: module.exports = { devServer: { port: 3333, open: true }, css: { loaderOptions: { sass: { data: `@import "@/assets/scss/_variable.scss";` } } } } _variable.scss的代码如下: $theme-color: #33aef0; 组件中的scss

vue cli3使用官方方法配置sass全局变量报错ValidationError: Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.

我使用官方文档提供的配置sass全局变量,但是报错! vue.config.js代码如下: module.exports = { css: { loaderOptions: { sass: { data: `@import "[email protected]/assets/scss/variables.scss";`, }, } } } variables.scss的代码如下: $color:#fff; 组件代码如下: <style lang="scss"

spring+hibernate实体类注解详解(非原创) + cascade属性取值

@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{} 1 @Entity(name="EntityName") 必须 name为可选,对应数据库中一的个表 2 @Table(name="

hibernate 中set的3个属性(inverse,cascade,order_by)

inverse:表示放弃控制权,让另一端作为主控端,来防止过多的sql语句 cascade:级联 * 对一的一端设置cascade="delete"* 级联删除* 会先将多的一端删除然后删除一的一端 * 对一的一端设置cascade="delete-orphan"* 解除关系,删除孤儿 cascade="save-update":根据级联关系保存或更新. * order_by 属性:写的是一的一端的列名,而不是属性名示例: order-by=&q

asp.net 发布时出现了Object reference not set to an instance of an object错误

这个问题编译web网站的时候没有任何问题,只有在publish的时候报错,因为编译的时候没有出现这个错误,基本上可以排除语法错误,由于错误publish出错的情况应该是某些对象缺失了. 经过反复的思考,已经没有任何办法来解决这个问题了,于是在网上找了很久,终于在stackoverflow找到了同样的问题,解决办法是关掉mcafee主动防御,当时完全不能理解.但是很有效,关掉了之后发布等待,果然这个问题没有再出来,打开mcafee又出现了这个问题. ps:这几次遇到的问题都比较奇怪. 总结: 1.

解决Hibernate删除异常:deleted object would be re-saved by cascade

我们在指定了数据库表的关联映射后,在删除其中一方的的时候,提示了以下异常:deleted object would be re-saved by cascade (remove deleted object from associations): [entity.Associationinformation#7] (注:entity.Associationinformation是实体类,7为设定的外键的值) 下面是我的多对一关联情况: 1.实体类: entity.Associationinfor