`

hibernate4 detached entity passed to persist

 
阅读更多

最近工作中持久化对象时总是报错detached entity passed to persist,查了数据库中id生成策略和数据库是自动递增的,首先排除是id策略引起的,然后检查程序也没有setId,排除了id相关的问题,另外set get方法使用的lombok框架的@Getter @Setter注解,排除get set的问题,让同事看了一下,发现字段属性有基本数据类型,改为对象类型了还是不行,最后比对了调用类似方法的实体,发现好像少了构造方法,加上@NoArgsConstructor和@AllArgsConstructor注解再次执行程序就好了,我遇到的这个问题就是因为没有构造方法导致的,其中上面的注解必须使用lombok.jar才行的,否则还是使用get set 方法。

上述问题的解决方法的思路是

1.检查id策略,是否要使用setId,数据库中自动生成的就不用

2.检查实体是否都有get set方法

3.检查实体是否含有构造方法

 

java学习交流:513650703

分享到:
评论

相关推荐

    hibernate aip hibernate aip

    9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity passed to persist 等,并配置合适的日志系统,如Log4j或SLF4J,以便追踪应用运行状态。 总的来说,Hibernate AIP涵盖了从项目初始...

    Hibernate save persist merge探究

    《Hibernate的save、persist、merge深度解析》 在Java企业级开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助...

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    4. **实体状态异常**: Hibernate在操作实体时会根据其生命周期状态进行处理,如果出现“ detached entity passed to persist”之类的错误,可能是因为实体状态管理不当。确保在操作实体前正确处理其状态(如merge、...

    Hibernate4中文帮助文档(中文教程)

    Hibernate将对象分为瞬时(Transient)、持久化(Persistent)和脱管(Detached)三种状态。瞬时对象未与数据库关联,持久化对象已保存到数据库,脱管对象曾是持久化但已与会话断开。`save()`方法将瞬时对象变为持久...

    java私塾独家首发最新Hibernate4教程

    ### Hibernate4核心知识点详解 #### 一、Hibernate4简介与入门 **1.1 Hibernate4概述** Hibernate4是一款开源的对象关系映射(Object Relational Mapping, ORM)框架,它简化了Java应用程序与数据库之间的交互...

    SSH项目整合示例【源码】

    它确保在用户请求的整个生命周期内,Hibernate的Session保持打开状态,从而避免了“懒加载”时可能出现的“Detached entity passed to persist”错误。在Spring中,通过开启`<tx:annotation-driven>`和配置`...

    [PDF]Hibernate4(基本开发,入门,配置,CRUD)

    Hibernate 支持对象的多种状态管理,包括瞬时状态(Transient)、持久状态(Persistent)和游离状态(Detached),每种状态对应不同的行为。 #### HQL 和 Native SQL - **HQL**(Hibernate Query Language):一种...

    JPA 开发中遇到的错误

    javax.persistence.PersistenceException: detached entity passed to persist 当你尝试保存一个已经与JPA上下文断开连接(即处于“游离”状态)的实体时,会抛出此异常。在JPA中,只有处于托管状态的实体才能被...

    精通hibernate源码ch4

    《精通Hibernate源码Chapter4:Java对象持久化技术详解》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。深入理解Hibernate的源码,不仅可以帮助开发者提高开发效率,还...

    Hibernate框架jia包

    Hibernate通过`<class>`标签(XML映射)或@Entity注解(注解映射)定义实体类,`<id>`表示主键,`<property>`或@Basic对应字段,`<many-to-one>`或@ManyToOne处理一对多关系,`<one-to-many>`或@OneToMany处理多对...

    hibernate_reference.pdf

    - **Logging**: Discusses how to configure logging frameworks like Log4j or SLF4J for Hibernate. - **Implementing a Naming Strategy**: Explains how to customize the naming strategy used by Hibernate ...

    Hibernate手册中文版

    - Hibernate识别四种实体状态:瞬时(Transient)、持久化(Persistent)、脱管(Detached)和游离(Detached)。 - 理解这些状态有助于正确处理对象的生命周期。 《Hibernate技术手册中文版.chm》将详细讲解以上...

    hibernate-entitymanager-3.4.0.GA

    4. **持久化上下文(Persistence Context)**:是Hibernate Entity Manager维护的一个内存中的对象状态管理区域,确保在一段时间内对象的持久化状态是一致的。 5. **查询语言(JPQL)**:Java Persistence Query ...

    Hibernate4学习入门

    在 Hibernate4 学习中,首先你需要访问官方网站 www.hibernate.org 下载最新版本,如 hibernate-release-4.0.0.Final.zip。解压缩后,将 lib/required 目录下的所有 jar 包添加到你的 Java 项目中。然后,创建 `...

    ORM hibernate。jar包

    4. **Criteria查询和HQL**:Hibernate提供了两种查询方式,一是原生的SQL,二是HQL(Hibernate Query Language),类似于SQL但面向对象。Criteria API提供了一种类型安全的查询方式,无需编写字符串查询,更易于维护...

    Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别

    在Hibernate框架中,Session是与数据库交互的主要接口,它提供了多种方法来操作对象的状态和数据。本文主要讨论了`get`、`load`方法以及`flush`、`clear`、`evict`等方法的区别。 首先,让我们关注`get`和`load`的...

    5.Hibernate 05 Hibernate结合JPA1

    3. **数据访问**:通过EntityManager接口进行数据操作,如EntityManagerFactory创建EntityManager实例,entityManager.persist()保存实体,entityManager.find()查找实体,entityManager.remove()删除实体。...

    hibernate3.2_src官方源码

    4. **HQL(Hibernate Query Language)**:Hibernate特有的查询语言,类似于SQL,但面向对象。源码中的`org.hibernate.hql`包包含了HQL解析器和执行器,对于理解查询处理流程很有帮助。 5. **事务管理**:Hibernate...

    hibernate 4.0.0 jar

    8. **实体生命周期**:Hibernate定义了五个状态(Transient、Persistent、Detached、Removed和Managed),并提供了相应的生命周期方法如`persist()`, `merge()`, `saveOrUpdate()`, `delete()`等来管理实体状态。...

Global site tag (gtag.js) - Google Analytics