zoukankan      html  css  js  c++  java
  • org.hibernate.PersistentObjectException: detached entity passed to persist

    简单地来看,将一个游离的对象要被持久化(save)时报错。 
    我们知道要持久化对象时候,通常Hibernate会根据ID生成策略自动生成ID值,但是这个对象ID已经有值,所有抛错。这个错误会出现在配置如下一对多@OneToMany的关联关系等出现。

    // 部门拥有的车辆
        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "assignedDept")
        @JsonIgnore
        private List<Vehicle> assignedVehicles;

    因为级联关系是CascadeType.ALL,所以save时会保存级联的对象Role,但是Role已经存在,因此就报错了。将cascade改为CascadeType.MERGE或者CascadeType.REFRESH即可,表示级联对象在Role表存在则进行update操作,而不做save操作。级联操作时谨慎用CascadeType.ALL

    改为:

    @OneToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY, mappedBy = "assignedDept")
  • 相关阅读:
    volatile用法
    static用法
    sizeof用法
    C语言void关键字的深刻含义
    extern用法
    const用法
    attribute用法
    Task的运行过程分析
    Android BroadcastReceiver实例Demo(有序广播的发送)
    旅行-许巍
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/7485319.html
Copyright © 2011-2022 走看看