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")

就可以轻松搞定。

时间: 2024-08-01 10:57:42

org.hibernate.PersistentObjectException: detached entity passed to persist异常的相关文章

jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常

jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常 发生这个原因是因为我们已经在实体类用JPA注解指定了主键的生成策略主键就不能设置了,一旦不为空或者0就被认为是已经保存到了数据库中,一旦调用persist()方法就会抛出上面的异常 把0去掉,如下图:

org.hibernate.PersistentObjectException:detached entity passed to persist出现这个异常了。。

异常信息:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.xxx.Xxx 简单地说,发生此异常即是一个游离的对象要被持久化(save)时,其ID既要ORM框架为它生成ID值,而此实体的ID却已然有值. 解决的办法很多,笔者是为其实体做一个属性编辑器,在编辑器判断主键ID是否为空且长度是否为0,若是,则置入一个null.在保存前检查一下ID也是一种解决办法. 有时在

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 原因是第二次插入用户的时

org.hibernate.PersistentObjectException: detached entity passed to persist

项目中用到自定义Hibernate主键生成策略,并且主键生成有一定的规则 一:Entity定义 二:主键策略类 三:单元测试 四:总结 手动set主键,Hibernate对象是Detached(游离状态),persist持久化方法(即save)不支持detached对象

SpringDataJPA中出现的保存出现的Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist:

出现这种问题是先看看自己的实体类主键策略 通常原因分两种: [email protected](strategy=GenerationType.IDENTITY)     这种主键策略是自增长,数据库中设置主键自增和在对应的实体类中设置对应的主键自增,只要有哪一边没有设置,就会报该异常 2.我的数据表主键不是自增长,如图 这是我自己写的主键生成策略 *主键生成工具类 import java.util.concurrent.locks.Lock;import java.util.concurren

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: sys.entity.Role; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: sys.entity.Role at org.springframew

JPA:detached entity passed to persist

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.example.entity.UserInfo at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:124) at org.hibernate.event.inte

detached entity passed to persist 问题

org.hibernate.PersistentObjectException: detached entity passed to persist: po.ParamData 游离态对象向持久化对象转换报错 po类中未声明主键id生成方式 分析未hibernate缓存中存在删除后的游离态数据,导致删除后再次添加相同数据报错 可能是session未关闭. 删除了一级缓存 依旧不行.

Hibernate---detached entity passed to persist一个解决方法

1.查看id生成策略,2.查看是否是手动设置的id :3.查看实体对象映射配置是否正确. 例如: public Emplopes(String name, char gender) { super(name, gender); // TODO Auto-generated constructor stub } 之中多了一个 id public Emplopes(Integer id,String name, char gender) { super(id,name, gender); // TO