`
ganqing1234
  • 浏览: 171688 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hibernate对于相同id对象的处理

阅读更多

今天遇到一个奇怪的问题,从一个视图里面拿数据。因为关联的关系,所以有id重复的数据:

id        username            role
2357   admin                  admin
2378   adminCsoRno      admin
2378   adminCsoRno      cso
2378   adminCsoRno      rno

 这样通过hibernate去拿这个view的数据时,拿到的list的size是4,但是后面三个指向的是同一个对象。感觉hibernate对id相同的数据做了过滤,只取了其中的一个,同一个session里同一个id对应的对象应该是唯一的。

 

解决的方法是将原先mapping file里的id字段改成属性,view中新加个rownum来映射mapping file的id字段,这样id字段不同了,就可以真正的取到4个对象了。

分享到:
评论
2 楼 ganqing1234 2009-12-12  
比如你从视图里面拿到的数据是这样的
id    name 
1     tom
2     jeff
2     tim

这样 后面两个的id是相同的,如果在映射文件中将id配置成主键,hibernate就会出现我上面说的情况了
1 楼 bing_yu 2009-12-09  
我是一个新手,能不能用例子来说明啊。谢了。

相关推荐

    hibernate常见问题及处理.doc

    这个异常表明在同一个Hibernate Session中存在两个具有相同标识但实际是不同对象的情况。处理方法有: - 使用`session.clean()`,这将清理Session中的所有对象,但之后的`saveOrUpdate()`操作可能会导致其他异常。...

    《精通Hibernate》学习-对象关系映射基础.zip

    通过在Java对象和数据库记录之间建立映射,Hibernate自动处理数据的持久化。 2. 安装与配置:开始学习Hibernate之前,需要将其添加到项目依赖中,通常是通过Maven或Gradle。配置包括创建`hibernate.cfg.xml`文件,...

    Hibernate对象关系

    ### Hibernate对象关系详解 #### 一、单一关联(一对一) **定义** 一对一关联是指数据库中的两个表通过主键或外键的方式直接关联起来的一种关系。 **场景** 假设我们有两个类`Foo`和`Bar`,其中`Foo`有一个属性...

    Hibernate中的merge使用详情解说

    在第二个 Session 中,我们使用相同的 ID 从数据库中获取了一个 Students 对象,并使用 merge 方法将第一个 Session 中的对象数据赋值给第二个 Session 中的对象。 需要注意的是,在使用 merge 方法时,我们需要...

    Hibernate选择题(含答案).doc

    8. 持久态对象在Session中会被缓存,当再次通过Session获取相同ID的对象时,会优先从一级缓存中查找,而不是直接查询数据库。 9. 给定的代码中,由于两个`session.get()`方法使用了相同的ID,所以它们返回的是同一个...

    Hibernate save persist merge探究

    调用merge()时,Hibernate会先在当前Session中查找具有相同ID的对象,如果找到则更新其状态;如果找不到,则创建一个新的持久化实例,并复制传入对象的所有属性值。最后,所有更改将在事务提交时同步到数据库。 四...

    hibernate_day02笔记

    通过Hibernate,开发者可以创建Java对象(实体类),这些对象与数据库中的表进行映射,从而实现对数据库数据的CRUD(创建、读取、更新、删除)操作。 **实体类编写规则**: 1. 实体类的属性应声明为私有的。 2. ...

    hibernate难点重点笔记

    在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,深入理解和掌握其难点是提升开发效率的关键。本文将针对Hibernate中的几个重要概念进行详细讲解,包括主键生成...

    Hibernate笔记 马士兵

    第9课 Hibernate的重点学习:Hibernate的对象关系映射 12 一、对象---关系映射模式 12 二、常用的O/R映射框架: 13 第10课 模拟Hibernate原理(OR模拟) 13 一、 项目名称 13 二、 原代码 13 第11课 Hibernate基础配置...

    hibernate第一天笔记

    它允许我们将数据库表的记录与Java对象进行关联,从而在编程时处理对象而非SQL语句。在Hibernate中,我们可以通过配置XML文件来定义这种映射关系。 配置主键生成策略是数据库操作的关键。例如,可以使用`...

    hibernate 中文文档 and _annotation.chm

    - HQL(Hibernate Query Language):是Hibernate特有的面向对象的查询语言,类似SQL,但针对对象模型操作。 2. Hibernate配置: - hibernate.cfg.xml:配置文件定义了数据库连接、方言、缓存策略等信息。 - ...

    JAVA 使用hibernate配置实例

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程将详细讲解如何在Java项目中配置和使用Hibernate,包括在普通Java工程...

    hibernate 4.1.4

    这些元数据使得Hibernate能够自动处理对象与数据库之间的转换。 进一步,Hibernate提供了Session接口,它是操作数据库的主要入口。Session负责管理实体的状态,包括瞬时态、持久态和脱管态。当我们调用`save()`或`...

    Hibernate的generator属性

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。在 Hibernate 中,`generator` 属性是用于指定如何生成实体类的唯一标识(通常为主键)的一种机制。这个属性可以配置...

    传智Hibernate框架资料

    2. **延迟加载**: 对于不立即使用的关联对象,使用懒加载以节省资源。 3. **缓存策略**: 合理使用二级缓存和查询缓存,减少数据库访问。 4. **避免N+1查询问题**: 在一对多或多对多关系中,使用JOIN查询替代单独的子...

    Hibernate3.2.6源代码以及英文api

    Hibernate是一个开源的对象关系映射(ORM)框架,它在Java编程中扮演着至关重要的角色,使得开发者能够以面向对象的方式处理数据库操作。Hibernate3.2.6是该框架的一个版本,发布于2007年,它包含了丰富的特性和改进...

    基于Hibernate实现的学生选课系统

    【基于Hibernate实现的学生选课系统】是一个典型的Java Web应用程序,主要目标是利用Hibernate这一强大的对象关系映射(ORM)框架来简化数据库操作,为初学者提供一个实践平台。Hibernate允许开发者将业务对象与...

    Hibernate中文参考文档学习

    Hibernate是一款开源的对象关系映射(ORM)框架,它允许Java开发者在Java对象和数据库记录之间建立映射,从而简化...在实际项目中,熟练运用Hibernate能帮助你更好地处理对象和数据库之间的关系,降低系统复杂度。

    SSH之Hibernate总结

    它们各有特点,但都致力于解决相同的问题:对象和关系数据间的交互。 4. Hibernate基础配置(重点) Hibernate的配置文件(hibernate.cfg.xml)包含了数据库连接信息、方言、缓存设置等关键参数。配置文件中的...

    hibernate 3.5.5 常用jar包

    Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个“hibernate 3.5.5 常用jar包”中,包含了运行和开发基于Hibernate 3.5.5...

Global site tag (gtag.js) - Google Analytics