本文转载自
http://blog.csdn.net/zhoutao198712/archive/2009/05/14/4184517.aspx
再用jpa+spring+struts2开发的是时候遇到一个问题(采用了注解的方式,xml配置的道理是一样的),当我在注册用户的时候,注册第一个用户没有问题,但注册第二个用户开始就会抛出一个异常:
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.dalton.domain.User
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException
(AbstractEntityManagerImpl.java:614)
org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
…………………………
在网上找了半天也没找到答案。
后来通过println找了原因,当我第二次插入用户的时候,还没有实例化到数据库就有了ID值,而且这个ID值是我第一次插入用户的ID,这是不正常,因为ID没有设置过,而且JPA默认的行为是只要指定了主键生成策略,主键就不能设置了,一旦不为空或者0就被认为是已经保存到了数据库中,一旦调用persist()方法就会抛出上面的异常。
为什么会还有第一次的插入用户的信息呢,原因就是我action的作用域设置错误了,我采用了默认单例的设置,对于Action来说必须采用 prototype(每次调用创建一个对象)的作用域,修改方法是:在Action上就一个注解@Scope("prototype")
这样就OK了。
分享到:
相关推荐
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/...
Maven坐标:org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final; 标签:hibernate、javax、persistence、jpa、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开...
Maven坐标:org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final; 标签:hibernate、javax、persistence、jpa、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index...
在使用Hibernate框架进行开发的过程中,经常会遇到各种各样的异常问题。这些问题可能会导致程序无法正常运行,甚至影响到系统的稳定性。本文将针对几个常见的Hibernate错误进行深入分析,并提供相应的解决方法。这些...
标题中的"org.hibernate.ejb-library-3.4.0.GA"是Hibernate Entity Beans的一个特定版本,它是Hibernate框架的一部分,专门用于处理Java Enterprise Edition (EE)环境中的持久化。Hibernate是著名的对象关系映射...
标题 "org.hibernate.ejb-library-3.4.0.GA-A" 指示这是一个与Hibernate相关的库,特别针对EJB(Enterprise JavaBeans)版本3.4.0,并且是为OSGi环境优化的。描述中提到它适用于在Virgo Jetty服务器上进行Web开发,...
org.hibernate.jpa.QueryHints jar hibernate-entitymanager-4.3.0.Final.jar
在Java世界中,Java Persistence API(JPA)是Oracle公司推出的用于对象关系映射(ORM)的标准框架,它简化了数据库操作,使开发者能够用Java对象来操作数据库记录。本教程将深入探讨JPA中的一对多双向关联及级联...
描述中提供的博文链接虽然没有具体内容,但我们可以推测博主可能在尝试使用Spring框架的持久化功能,如JPA(Java Persistence API),而遇到了此问题。`javax.persistence.EntityListener`是JPA中用于定义实体监听器...
包含hibernate所有所需jar包还有一些其他包日志包、jpa支持包等: 列如:hibernate-core-5.1.0.Final.jar hibernate-ehcache-5.1.0.Final.jar hibernate-entitymanager-5.1.0.Final.jar hibernate-envers-5.1.0....
- `org.hibernate.annotations`包下的注解:如@Entity、@Table、@Column等,定义实体和属性的映射规则。 4. 使用Hibernate的步骤: - 配置Hibernate:创建`hibernate.cfg.xml`文件,设置数据库连接等参数。 - ...
javax.persistence.PersistenceException: detached entity passed to persist 当你尝试保存一个已经与JPA上下文断开连接(即处于“游离”状态)的实体时,会抛出此异常。在JPA中,只有处于托管状态的实体才能被...
spring.jpa.hibernate.ddl-auto: update 根据实体生成表结构,实体属性变动时,更新表结构,开发时建议使用这种策略 spring.jpa.hibernate.ddl-auto: validate 启动时校验实体和表结构是否一致, 数据结构稳定时采用...
Hibernate Commons Annotations(HCA)是Hibernate框架的一个重要组成部分,它提供了与JPA(Java Persistence API)兼容的元数据注解,使得开发者能够更方便地在Java对象上声明持久化属性和行为。在本文中,我们将...
spring.jpa.hibernate.cache.region.factory_class=org.hibernate.cache.redis.hibernate5.SingletonRedisRegionFactory ``` 4. **实体类注解**: 对于需要缓存的实体类,可以使用`@Cacheable`、`@CacheEvict`等...
《Hibernate 5.3.18.Final:企业级持久化框架深度解析》 Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,是开发者进行数据库操作的重要工具。这次我们关注的是其5.3.18.Final版本,这个版本在稳定性...
org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....
org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....
org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....