javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist:
2024-08-24 02:04:35
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist:
再用jpa+spring+struts2开发的是时候遇到一个问题(采用了注解的方式,xml配置的道理是一样的),当我在注册用户的时候,注册第一个用户没有问题,但注册第二个用户开始就会抛出一个异常:
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.dalton.domain.User
原因是第二次插入用户的时候,还没有实例化到数据库就有了ID值,而且这个ID值是我第一次插入用户的ID,这是不正常,因为ID没有设置过,而且JPA默认的行为是只要指定了主键生成策略,主键就不能设置了,一旦不为空或者0就被认为是已经保存到了数据库中,一旦调用persist()方法就会抛出上面的异常。
为什么会还有第一次的插入用户的信息呢,原因就是action的作用域设置错误了,采用了默认单例的设置,对于Action来说必须采用prototype(每次调用创建一个对象)的作用域,修改方法是:在Action上就一个注解@Scope("prototype")
就可以轻松搞定。
spring 采用xml配置的时候action的singlton属性一定要配置成false
最新文章
- 巧用location.hash保存页面状态
- ABP理论学习之MVC控制器(新增)
- C# 理解泛型
- git 使用详解(5)-- get log 查看提交历史【转】
- Eclipse for PHP Developers + xamp +xdebug
- js对象序列化JSON.stringify()与反序列化JSON.parse()
- setTintColor
- 误mlogc.c:32:23: error: curl/curl.h: No such file or directory
- Java高效编程(2) -- Creating and Destroying Objects
- WPF wpf scrollviewer 触屏滚动 窗体弹跳
- android mediaplayer
- Android与路由器连接服务
- 特殊计数序列——第二类斯特林(stirling)数
- C# 实现Jwtbearer Authentication
- CSS层叠样式表(Cascading Style sheets)
- JavaScript基础知识(数据类型)
- VMware12上安装CentOS7无法上网问题
- IE10弹窗showModalDialog关闭之后提示SCRIPT5011:不能执行已释放的Script代码
- Android Studio配置设置
- 关于VC++6.0与WIN10系统不兼容的解决办法
热门文章
- 《挑战程序设计竞赛》P196 铺砖问题
- [LeetCode] Longest Common Prefix 字符串公有前序
- cmd窗口情况下:windows下cmd默认的编码是GBK
- luogu 1969 积木大赛
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- hdu 2739(尺取法)
- 【原创】SSAS 实例重命名
- AC日记——数据流中的算法 51nod 1785
- Java 8 Lambda表达式的使用
- IIS 7 Access to the path ‘c:\windows\system32\inetsrv\’ is denied