`

Hibernate_a different object with the same identifier value was already associat

 
阅读更多

via: http://www.blogjava.net/hrcdg/articles/157724.html

 

1、a different object with the same identifier value was already associated with the session。

  错误原因:在hibernate中同一个session里面有了两个相同标识但是是不同实体。

  解决方法一:session.clean()

  PS:如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出"Found two representations of same collection"异常。

  解决方法二:session.refresh(object)

  PS:当object不是数据库中已有数据的对象的时候,不能使用session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。

  解决方法三:session.merge(object)

  PS:Hibernate里面自带的方法,推荐使用。

2、Found two representations of same collection

  错误原因:见1。

  解决方法:session.merge(object)

以上两中异常经常出现在一对多映射和多对多映射中

 

说下我的理解:

比如说有个People类你已经在数据库中查询出来了一个People对象 A,但是后来(当这次session还未关闭,一般都是在同一个方法里)你又创建了一个People对象B他和A的主键值一模一样,当你要保存B的时候hibernate是不允许两个主键相同的对象在同一个session里面的,所以最根本的解决办法就是,当你需要修改这个对象的时候只要修改A的相应的值然后save保存就可以了,没必要再创建B再去保存B.

分享到:
评论

相关推荐

    hibernate常见异常

    、org.hibernate.id.IdentifierGenerationException 以及 a different object with the same identifier value was already associated with the session 等。 1. net.sf.hibernate.MappingException ...

    hibernate_persistence第02-16章书中源码

    《hibernate_persistence》是关于Hibernate持久化框架的一本书,涵盖了从第2章到第16章的源代码示例。这些章节深入探讨了如何使用Hibernate进行对象关系映射(ORM),并提供了作者亲自编写的代码实例,方便读者学习...

    hibernate常见问题及处理.doc

    5. `a different object with the same identifier value was already associated with the session` 这个异常表明在同一个Hibernate Session中存在两个具有相同标识但实际是不同对象的情况。处理方法有: - 使用`...

    Java_implementation_of_access_control_identifier_c_The Class

    Java实现标识符对类的访问控制代码Java implementation of access control identifier code of the class

    Hibernate_v5.2.13.zip

    3. **ID(Identifier)**:每个实体都有一个唯一的ID,用于在数据库中唯一标识它。通常使用`@Id`注解来指定主键字段。 4. **映射文件(Mapping File)**:`hbm.xml`文件用于定义Java类与数据库表之间的映射关系,而...

    Hibernate Core 3.3.2.GA API+Hibernate_3.2.0_符合Java习惯的关系数据库持久化_zh_CN

    3. **Entity和Identifier**:Hibernate通过@Entity注解标记实体类,代表数据库中的表。实体类的主键由@Id注解标识,用于映射到数据库表的主键字段。 4. **Query和Criteria API**:Hibernate提供了两种查询方式,一...

    Hibernate_二级缓存总结

    **Hibernate 二级缓存详解** 缓存是一种提升应用程序性能的技术,它通过将常用数据存储在内存中,减少了对持久层数据库的访问,从而提高系统响应速度。在Hibernate框架中,缓存主要分为一级缓存和二级缓存。 **1. ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    hibernate_reference中文文档.pdf

    ### Hibernate Reference Documentation 知识点概述 #### 1. 教程 ##### 1.1 第一部分 — 第一个 Hibernate 应用程序 该章节详细介绍了如何创建并运行一个简单的 Hibernate 应用程序。 - **1.1.1 设置**:这部分...

    hibernate_api

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java应用程序中处理数据库操作,而无需直接编写SQL语句。Hibernate通过提供一个中间层,将数据对象与数据库表进行映射,使得数据访问更加方便、...

    Hibernate Tutorial 03 (Object Identifier).pdf

    在本教程中,我们将深入探讨Hibernate框架中的一个核心概念——对象标识符(Object Identifier)。通过本篇教程的学习,您将了解到对象标识符在Hibernate中的重要性以及如何正确地为持久化对象设置标识符。此外,我们...

    hibernate _annotation 注解编程

    ### Hibernate Annotation注解编程知识点详解 #### 一、概述与设置环境 - **概述**:Hibernate 是一个流行的 Java 持久层框架,它提供了一种面向对象的方式来处理数据库操作。Hibernate 支持多种元数据定义方式,...

    PC-IDENTIFIER-09.01.00.00-01.17.00.15

    KB2558 Desigo CC 2.1 SR1, ABT-Pro, XWP: Lease time of S7DOS expired at 31.12.2015 https://support.industry.siemens.com/cs/us/en/view/109482349

    The Digital Object Identifier initiative: metadata implications

    数字对象标识符(Digital Object Identifier,简称DOI)是一种持久性标识符,用于唯一地标识数字资源,如学术文章、数据集等。DOI系统由国际DOI基金会管理,并在出版界广泛采用。随着数字资源的增加以及对资源描述的...

    计算机网络第六版答案

    In these systems, packets are transmitted over the same wireless infrastructure used for cellular telephony, with the base station thus being managed by a telecommunications provider. This provides ...

    Hibernate5.0用户手册中文版本

    POJO(Plain Old Java Object)模型是 Hibernate 的默认域模型,要求实体对象满足以下几点: 1. 实现无参构造函数: 实体对象必须提供一个无参构造函数。 2. 提供 identifier(标识)属性: 实体对象必须提供一个...

    FlexGraphics_V_1.79_D4-XE10.2_Downloadly.ir

    - FIX: The value of some string flex-properties that began with a parenthese or curly bracket had no apostrophe at the end; that caused an error when reading. (fixed TPropList.SavePropValue for the ...

    S7A驱动720版本

    - When the signal conditioning function "S&M" was used for a byte value, the driver wrote wrong values to the PLC. Build 223 : New Functions: - The number of supported NetLinks has been ...

Global site tag (gtag.js) - Google Analytics