detached entity passed to persist问题与解决方案
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问题与解决方案相关推荐
- jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常
jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常 参考文章: (1)jpa遇到的 ...
- detached entity passed to persist异常解决
病理特征:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.xxx. ...
- detached entity passed to persist:***
detached entity passed to persist 翻译:翻译传递到持久化的分离实体. 错误提示: detached entity passed to persist: com.lzh ...
- org.hibernate.PersistentObjectException: detached entity passed to persist: cn.edu.xupt.bean.Users
persist持久化时,因为设置user表主键使用注解自动生成,所以当创建对象,id值不为0或是null就会报错.之前创建user对象时,没改对象的id值.
- org.hibernate.PersistentObjectException: detached entity passed to persist
简单地来看,将一个游离的对象要被持久化(save)时报错. 我们知道要持久化对象时候,通常Hibernate会根据ID生成策略自动生成ID值,但是这个对象ID已经有值,所有抛错.这个错误会出现在配置 ...
- deleted entity passed to persist: [dcms.ebridge.market.entity.Reward#null]
今天项目中的错误: deleted entity passed to persist: [dcms.ebridge.market.entity.Reward#<null>] 删除RetaR ...
- detachd entity passed to persist:数据库表名
办法1:创建新对象 办法2:加事务
- Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别
转载地址:http://www.2cto.com/kf/201212/178604.html 一.三种状态(Transient.Persistent.Detached) 在Hibernate中有三种状 ...
- PID file not written; -detached was passed,安装rabbitmq启动失败
有问题,注意看日志, 在/rabbitmq_server-3.7.5/var/log/rabbitmq下, 提示的很明显了,就是erlang版本不匹配,当然肯定有其它原因也会报这个错,重点是会自己看日 ...
最新文章
- Redis 难题突破,最经典 46 题含详细解析
- codevs1217 借教室 题解
- android 手动 打包,android 手动打包apk
- jQuery.proxy debug
- android studio 抽屉,java - Android导航抽屉(由Android Studio默认提供) - 堆栈内存溢出...
- vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)
- html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)
- 成都python工作少_成的解释|成的意思|汉典“成”字的基本解释
- 轻量服务器怎么进信息库,轻量服务器怎么上传数据库
- Jdk8之Lambda表达式
- zepto-创建dom
- 数分统计学基础知识框架。
- idea 破解版安装
- 鹏业安装算量NETDWGCOM接口创建失败处理办法
- 论文阅读问题总结(六):Meta-Learning with Domain Adaption for Few-shot Learning Under Domain Shift
- 阿里云OSS上传下载跨域问题
- register hotkey
- java程序员学习路线指南
- localhost: mv: 无法获取“/opt/module/hadoop-3.1.3/logs/hadoop-atguigu-datanode-hadoop102.out.3“ 的文件状态(sta
- 惊闻杭州业主不满楼盘降价大闹售楼处
热门文章
- f15_Trading Strategies2_sma_AAPL_Log return_EUR_OLS regress_df highlight_Lagrang_GaussianNB_DNNClass
- 2020机修钳工(中级)模拟考试及机修钳工(中级)作业模拟考试
- 现在人工智能自动修复老照片的效果有好?
- 工程线图中计算机的处理方法,CAD建筑施工图绘制复杂施工放线方法
- The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
- vite如何兼容低版本浏览器
- 一个故事带你看透HTTPS(上)
- 【卡夫卡的岛上书店】:一个利用 vuepress 的主题 vuepress-theme-reco 以及 vuepress-theme-vdoing 搭建自己的静态博客
- 斑马打印机打印不出来字怎么解决
- 什么是微信小程序什么是小程序微信小程序有什么优势