javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist:
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
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist:的更多相关文章
- javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.qingmu.Customer
		
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity pas ...
 - org.hibernate.PersistentObjectException: detached entity passed to persist异常
		
再用jpa+spring+struts2开发的是时候遇到一个问题(采用了注解的方式,xml配置的道理是一样的),当我在注册用户的时候,注册第一个用户没有问题,但注册第二个用户开始就会抛出一个异常: j ...
 - jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常
		
jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常 发生这个原因是因为我们已经在实体 ...
 - org.hibernate.PersistentObjectException: detached entity passed to persist
		
简单地来看,将一个游离的对象要被持久化(save)时报错. 我们知道要持久化对象时候,通常Hibernate会根据ID生成策略自动生成ID值,但是这个对象ID已经有值,所有抛错.这个错误会出现在配置如 ...
 - org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: 的解决方案
		
1.错误信息 org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist ...
 - cloudera-scm-server启动时出现Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection问题解决方法(图文详解)
		
问题现象 查看 [root@cmbigdata1 cloudera-scm-server]# pwd /var/log/cloudera-scm-server [root@cmbigdata1 clo ...
 - Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Cannot open connection
		
Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceE ...
 - javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: ResultSet is from UPDATE. No Data.
		
Java jpa调用存储过程,抛出异常如下: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCEx ...
 - javax.persistence.PersistenceException: Unable to build entity manager factory
		
javax.persistence.PersistenceException: Unable to build entity manager factory at org.hibernate.jpa. ...
 
随机推荐
- HDOJ 1398 Square Coins
			
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
 - alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号
			
ret = alloc_chrdev_region(&ndev, 0, 1, "chr_dev"); //分配设备号 alloc_chrdev_region申请一个动态主设 ...
 - CString 转换为 char*
			
CString str="这是一个测试"; char* str_0=str.GetBuffer(0);
 - DB2数据库用 With语句分隔字符
			
SELECT T1.REPAIRNO, T1.UNDERTAKER10, T3.FULLNAME AS RECEIVERNAME, T1.WALKDISTANCE, T1.STATUSCODEDATE ...
 - ui设计的好网站(转载)
			
设计师网址导航 http://hao.uisdc.com/ 站酷 国外: Dribbble - Show and tell for designers.Behance 这两个网站就够了啊 ————— ...
 - Tallest Cow
			
题目描述 FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a p ...
 - delphi中将 4 个 Byte 合成 1 个 Integer 的五种方法
			
有4个字节类型的值,用移位或逻辑运算符怎么合成一个整数?比如 $FFEEDDCC.高$FF$EE$DD$CC低 //方法 1: 共用内存procedure TForm1.Button1Click(Se ...
 - JSONModel解析Dictionary To Model /JSON To Model
			
你在把字典转成object的时候还在按下面这样: self.id = [jsonDict objectForKey:@"id"]; self.name = [jsonDict ob ...
 - Assembly.CreateInstance和Activator.CreateInstance
			
本来是在设计模式中的工厂方法,在实现抽象工厂时,用到了一直都不熟悉的反射. namespace Factory { public abstract class Factory { public abs ...
 - 版本号控制软件:TortoiseSVN高速上手
			
百度百科对于SVN的一点解释: TortoiseSVN是Subversion版本号控制系统的一个免费开源client,能够超越时间的管理文件和文件夹.文件保存在中央版本号库,除了能记住文件和文件夹的每 ...