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

最新文章

  1. 巧用location.hash保存页面状态
  2. ABP理论学习之MVC控制器(新增)
  3. C# 理解泛型
  4. git 使用详解(5)-- get log 查看提交历史【转】
  5. Eclipse for PHP Developers + xamp +xdebug
  6. js对象序列化JSON.stringify()与反序列化JSON.parse()
  7. setTintColor
  8. 误mlogc.c:32:23: error: curl/curl.h: No such file or directory
  9. Java高效编程(2) -- Creating and Destroying Objects
  10. WPF wpf scrollviewer 触屏滚动 窗体弹跳
  11. android mediaplayer
  12. Android与路由器连接服务
  13. 特殊计数序列——第二类斯特林(stirling)数
  14. C# 实现Jwtbearer Authentication
  15. CSS层叠样式表(Cascading Style sheets)
  16. JavaScript基础知识(数据类型)
  17. VMware12上安装CentOS7无法上网问题
  18. IE10弹窗showModalDialog关闭之后提示SCRIPT5011:不能执行已释放的Script代码
  19. Android Studio配置设置
  20. 关于VC++6.0与WIN10系统不兼容的解决办法

热门文章

  1. 《挑战程序设计竞赛》P196 铺砖问题
  2. [LeetCode] Longest Common Prefix 字符串公有前序
  3. cmd窗口情况下:windows下cmd默认的编码是GBK
  4. luogu 1969 积木大赛
  5. struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
  6. hdu 2739(尺取法)
  7. 【原创】SSAS 实例重命名
  8. AC日记——数据流中的算法 51nod 1785
  9. Java 8 Lambda表达式的使用
  10. IIS 7 Access to the path ‘c:\windows\system32\inetsrv\’ is denied