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

简单地说,发生此异常即是一个游离的对象要被持久化(save)时,其ID既要ORM框架为它生成ID值,而此实体的ID却已然有值。对于新手容易出现此异常,但一些有经验的程序员有时也会碰到此问题,笔者就有一次,故与网友们“分享这次遭遇”。

让ORM为即将要持久的实体生成ID值(ORM的主键策略),是典型的做法,例如有自增长(即便是DBMS来做)、UUID,Hibernate框架则更多。因此,不能手工为此实体赋上ID值。笔者设计主要实体时,通常用UUID作主键,很显然它是字符型的。但是,有时会发现form表单为其赋一个长度为0的字符串,看html代码:

<input name="id" type="text" id="id" value=""/>

注意 value=""

如果是增加,则不需要在form表单中安置这么个控件,笔者通常将增加和修改实体在一个form表单中完成,笔者很喜欢用Spring MVC。这时id字段被Spring MVC包装到实体中就有值了(其值是长度为0的空字符串)。ORM保存时上面的异常就来了。解决的办法很多,笔者是为其实体做一个属性编辑器,在编辑器判断ID是否为空且长度是否为0,若是,则置入一个null。在保存前检查一下ID也是一种解决办法。

有时在一对一、一对多保存时,关联方也会存在这种情况,所以关键检查ID字段就可以了。

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:***

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

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

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

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

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

  5. detached entity passed to persist问题与解决方案

    JPA save对象的时候有时候会遇到如题的错误,可能有两种原因: 1.该对象定义的是自动生成id的方式,insert的时候写入的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. JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

    测试又报bug啦 接到测试小伙伴的问题,说是一个接口不返回数据了,好吧,虽然不是我写的接口任务落到头上也得解决,本地调试了一下,好家伙,直接抛了个异常出来,这又是哪位大哥喝醉了写的代码... Exce ...

  9. orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决

    创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...

最新文章

  1. epoll监听文件_怎么理解把标准输入以ET模式加入epoll,监听EPOLLOUT事件时,epoll_wait多次返回?...
  2. bzoj3786星系探索 splay
  3. 转 graphviz工具及其原理
  4. 跟我一起写 Makefile(整理版)
  5. [转载]Memcache内存临界测试
  6. 算法-排序-基数排序(对任意整数排序)
  7. Python中的条件语句(if,if ... else,if ... elif ... else和嵌套的if)
  8. 基于redis实现分布式锁思考
  9. 构建和实现单点登录解决方案
  10. vue2.0项目的环境配置以及有哪些的坑
  11. java 打印出库单_使用Jasperreporter生成入库出库单打印等报表操作
  12. 数字臧品系统开发运行逻辑数字臧品系统开发源码搭建流程
  13. 签了之后才后悔了--转载--职场心法
  14. 内存卡数据被格式化如何恢复?
  15. module ‘statsmodels.stats.diagnostic‘ has no attribute ‘het_breushpagan‘
  16. i了i了,这简直就是2020全网最全最强的MyBatis面试题!
  17. 《社会调查数据管理——基于Stata 14管理CGSS数据》一1.5 本书简介和使用说明...
  18. 2021年中国奶酪行业发展现状及进出口状况分析:奶酪进口规模庞大,国产奶酪仍需发力 [图]
  19. 微信小游戏实战--cocos creator实现wordle游戏(五)
  20. 关于内存条价暴涨方面,很有味道的段子文

热门文章

  1. 2014山东省春季高考计算机本科学校,2017年山东春季高考五大本科学校排名
  2. dojo 图形显示_使用Dojo创建动态图形和图表
  3. npm cnpm npx nvm 区别
  4. Spring Boot制作个人博客-后端管理(登录)
  5. ege管理系统_医院挂号管理系统-智能新型医院挂号管理系统下载v95.44官方PC版-CE安全网...
  6. 一个技校生的IT生涯 --- 我和软件的姻缘【0】
  7. pythonpymysql
  8. Xpath---following-sibling节点
  9. .NetCore3.1接入Consul的服务端和客户端代码整理
  10. 批量构造四阶类自然数奇偶简单幻立方的一种方法