JPA save对象的时候有时候会遇到如题的错误,可能有两种原因:

1.该对象定义的是自动生成id的方式,insert的时候写入的id在数据库中已存在。

网上搜到的比较多的都是这种情况,但个人认为,实际项目中这么玩的情况很少,生成新对象谁会自己写入id。

2.笔者实际项目遇到的场景:对象A与对象B为一对多关系,即A中包含一个Set<B>类型成员,前端传来一堆数据,后台把这些数据组装成B对象,save到数据库中,然后将生成的对象set到A下面的这个Set<B>成员中。

但是,由于中间有某些复杂逻辑原因,这里不是直接拿数据库里save成功的B对象来set的,而是拿一开始组装出来的List<B>(即根据前端传来的数据new出来的对象)跟数据库数据对比,业务上的主键相同则认为已存在,然后拿出id set到前面的List<B>中,误以为只要往里面设置了主键,数据库就会知道这是一个已存在的对象,save会自动变成merge。其实不然,这个B对象虽然设置了一个已存在的主键,但这个对象任然处于一种detach的状态(关于hibernate中的几种状态,参考深入hibernate的三种状态),不被sessio托管,save的时候还是当成一个新对象进行insert。

一张图表示:

解决方案当然时用数据库中查询出来的对象来代替new出来的对象进行save。

detached entity passed to persist问题与解决方案相关推荐

  1. jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常

    jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常 参考文章: (1)jpa遇到的 ...

  2. detached entity passed to persist异常解决

    病理特征:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.xxx. ...

  3. detached entity passed to persist:***

    detached entity passed to persist 翻译:翻译传递到持久化的分离实体. 错误提示: detached entity passed to persist: com.lzh ...

  4. org.hibernate.PersistentObjectException: detached entity passed to persist: cn.edu.xupt.bean.Users

    persist持久化时,因为设置user表主键使用注解自动生成,所以当创建对象,id值不为0或是null就会报错.之前创建user对象时,没改对象的id值.

  5. org.hibernate.PersistentObjectException: detached entity passed to persist

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

  6. deleted entity passed to persist: [dcms.ebridge.market.entity.Reward#null]

    今天项目中的错误: deleted entity passed to persist: [dcms.ebridge.market.entity.Reward#<null>] 删除RetaR ...

  7. detachd entity passed to persist:数据库表名

    办法1:创建新对象 办法2:加事务

  8. Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别

    转载地址:http://www.2cto.com/kf/201212/178604.html 一.三种状态(Transient.Persistent.Detached) 在Hibernate中有三种状 ...

  9. PID file not written; -detached was passed,安装rabbitmq启动失败

    有问题,注意看日志, 在/rabbitmq_server-3.7.5/var/log/rabbitmq下, 提示的很明显了,就是erlang版本不匹配,当然肯定有其它原因也会报这个错,重点是会自己看日 ...

最新文章

  1. Redis 难题突破,最经典 46 题含详细解析
  2. codevs1217 借教室 题解
  3. android 手动 打包,android 手动打包apk
  4. jQuery.proxy debug
  5. android studio 抽屉,java - Android导航抽屉(由Android Studio默认提供) - 堆栈内存溢出...
  6. vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)
  7. html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)
  8. 成都python工作少_成的解释|成的意思|汉典“成”字的基本解释
  9. 轻量服务器怎么进信息库,轻量服务器怎么上传数据库
  10. Jdk8之Lambda表达式
  11. zepto-创建dom
  12. 数分统计学基础知识框架。
  13. idea 破解版安装
  14. 鹏业安装算量NETDWGCOM接口创建失败处理办法
  15. 论文阅读问题总结(六):Meta-Learning with Domain Adaption for Few-shot Learning Under Domain Shift
  16. 阿里云OSS上传下载跨域问题
  17. register hotkey
  18. java程序员学习路线指南
  19. localhost: mv: 无法获取“/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-datanode-hadoop102.out.3“ 的文件状态(sta
  20. 惊闻杭州业主不满楼盘降价大闹售楼处

热门文章

  1. f15_Trading Strategies2_sma_AAPL_Log return_EUR_OLS regress_df highlight_Lagrang_GaussianNB_DNNClass
  2. 2020机修钳工(中级)模拟考试及机修钳工(中级)作业模拟考试
  3. 现在人工智能自动修复老照片的效果有好?
  4. 工程线图中计算机的处理方法,CAD建筑施工图绘制复杂施工放线方法
  5. The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
  6. vite如何兼容低版本浏览器
  7. 一个故事带你看透HTTPS(上)
  8. 【卡夫卡的岛上书店】:一个利用 vuepress 的主题 vuepress-theme-reco 以及 vuepress-theme-vdoing 搭建自己的静态博客
  9. 斑马打印机打印不出来字怎么解决
  10. 什么是微信小程序什么是小程序微信小程序有什么优势