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

HQL主动抓取关联表数据

阅读更多

众所周知,lazy=false时,在取parent的同时也能取得children的数据,但很多情况下这是不需要的,很会影响性能。

可是如果变成lazy=true却又有一些不便之处,比如user和role,要显示user的所有role,如果得到user后,再根据user select出role,这样效率是很差的。

解决方法:利用fetch

select u from User u inner join fetch u.roles (HQL),这样就能在取得user的同时加载role了

使用fetch可能会遇到异常:

org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list

原因是你可能在select count(*)、sum()等这种统计中使用了fetch,而一般查询是能正确执行的。

分享到:
评论

相关推荐

    hibernateHQL关联查询

    在理解Hibernate HQL关联查询之前,我们需要先回顾一下数据库表连接的基本概念及其分类。数据库表连接主要分为以下几种: 1. **内连接(Inner Join)**:只返回两个表中满足连接条件的记录。如果某条记录在另一个表...

    hql多表查询

    HQL多表查询是Hibernate框架下高效、灵活地处理数据库多表关联数据的关键技术。通过理解其语法结构和实际应用场景,开发者可以更好地设计和实现复杂的数据查询逻辑,从而提升应用程序的数据处理能力和响应速度。此外...

    HQL语句 HQL语句

    HQL语句 HQL语句 HQL语句 HQL语句 HQL语句

    hql查询多个实体类,类之间没有外键关联

    hql查询多个实体类,类之间有外键关系,但是没有外键关联

    Hql多结果集

    HQL多结果集查询为开发者提供了强大的查询能力,可以方便地获取到所需的数据。通过灵活运用HQL的查询语法,不仅可以提高查询效率,还能简化代码逻辑,使得程序更加简洁易读。当然,在使用过程中还需要注意性能优化和...

    Hibernate连表查询 Hibernate连表查询

    在实际开发过程中,我们经常会遇到需要从多个表中获取数据的情况,这时就需要用到连表查询。 #### 1. HBM 映射文件 在提供的内容中,出现了两个HBM映射文件:`TopProductsDeputy.hbm.xml` 和 `TopProducts.hbm.xml...

    Hibernate数据检索(HQL)笔记

    ### Hibernate数据检索(HQL)知识点详解 #### 一、简介 Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。本文档基于...

    Hibernate 多表连接分页查询示范项目

    在实际业务中,往往需要处理多个关联表的数据。Hibernate 支持多种方式来实现多表连接查询,包括 HQL(Hibernate Query Language)和 Criteria 查询。本项目主要关注 Criteria API 的使用,这是一种基于 Java 对象的...

    HQL是hibernate自己的一套查询

    与传统的SQL语言不同,HQL更加注重于面向对象的特性,它支持Java类名和属性名作为查询条件,使得开发者可以直接使用Java对象模型来编写查询语句,而不需要了解底层数据库的具体表结构。HQL的这种特性大大提高了代码...

    更新关联表的值

    6. **HQL或Criteria查询**:在更新关联表时,还可以使用Hibernate特定的查询语言HQL或Criteria API,它们允许更灵活地操作关联。 7. **事务管理**:由于数据库操作通常涉及事务,因此确保正确地开启和提交事务是...

    精通HQL(word格式)

    在HQL中,你可以查询具有继承、多态和关联关系的数据。例如,如果你有一个继承层次结构的对象,HQL可以轻松处理这些继承关系。同样,对于多对一、一对多、多对多的关系,HQL也能提供简洁的查询语法。 【默认数据库...

    HQL.pdf数据查询语句

    HQL与SQL语法类似,但它理解Java实体和属性,因此HQL查询的对象是Java类而不是数据库中的表。 首先,HQL的基本查询语句包括从特定实体类中查询记录。例如,查询一个名为User的实体类的所有记录,可以使用以下语句:...

    Hibernate教程(数据查询)HQL,PDF格式

    ### Hibernate教程:数据查询与HQL详解 #### 引言 Hibernate是一款强大的对象关系映射(ORM)框架,它能够将Java对象与数据库表进行映射,极大地简化了数据库操作的复杂度。在数据查询方面,Hibernate提供了多种...

    精通hibernate HQL语言

    HQL是Hibernate官方推荐的检索数据的主要方式,因为它能够更好地体现对象模型的特性,如继承、多态和关联。 在学习HQL基础时,我们通常会用到一些示例数据。在这个例子中,我们有三个数据库表:`student`(学生表)...

    hql练习之种树.zip

    在IT领域,种树可能是指在数据库或程序中构建树状数据模型,比如数据库表之间的关联,或者是解决特定问题(如搜索、排序等)的算法。 【描述】:“hql练习之种树.zip” 描述简洁,但暗示了这是一个练习项目,可能...

    HQL的几钟常见写法

    这里的`DesignActivity`应该是指代一个实体类名,该类映射到名为`DesignActivity`的数据表。此查询返回所有`DesignActivity`实体的列表。 #### 2. 查询特定属性 **示例:** ```hql select e.id, e.name from Design...

Global site tag (gtag.js) - Google Analytics