以前一直以为hql很简单, 就一对象查询, 今天遇到一问题,折腾了许久, 才发现自己hql这块居然好多不知道.
以用户和角色为例, 一个用户可以对应多个角色,分别为user , role , 我的hql如下 :
from User u left join u.roles
数据库查询这一块没有问题,由于粗心,也没有去看控制台打印出来的sql是什么样子,我以为这一查询返回的是List<User>
的列表,然后在Jsp里面,理所当然的去遍历查出来的list ,取list里面单个user的属性在页面展示,整个过程很简单,jsp异
常显示说NumberFormatException"loginName" .......... ,一直不得解,loginName是user里面的一个属性,后面调试
的时候,查看hql查询出来的列表,发现居然不是List<User> ,而是个List,里面的每个元素是个Object的数组,该数组的
元素1为user对象,元素2为role对象。把开始的hql改为:
select u from User u left join u.roles
就ok了,查出来的就是List<User> ,在这样很简单的问题上花了不少时间,看来以后学东西不能太马虎了。
分享到:
相关推荐
本文将重点介绍Hibernate中的关联查询,并深入探讨HQL关联查询的实现原理及应用场景。 #### 二、数据库表连接概述 在理解Hibernate HQL关联查询之前,我们需要先回顾一下数据库表连接的基本概念及其分类。数据库表...
### HQL查询及语法详解 #### 一、HQL简介 HQL,全称为Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言。它基于SQL标准,但更加强调对象模型,支持Java中的对象关系映射(ORM),能够处理...
hql查询多个实体类,类之间有外键关系,但是没有外键关联
HQL多表查询是Hibernate框架下高效、灵活地处理数据库多表关联数据的关键技术。通过理解其语法结构和实际应用场景,开发者可以更好地设计和实现复杂的数据查询逻辑,从而提升应用程序的数据处理能力和响应速度。此外...
六、HQL关联查询 HQL支持一对一、一对多、多对多等关联查询。如查询每个用户的订单信息: ```java String hql = "from User u join fetch u.orders"; ``` 这里的`join fetch`实现了左外连接,并将订单信息一同加载到...
HQL支持多种连接查询方式,包括内连接、左外连接等,并且可以通过`fetch`关键字来明确指定关联级别的查询策略。 #### 各种连接查询详解 - **内连接(Inner Join)** - 语法:`[inner]join` - 描述:内连接只返回...
### Hibernate HQL 基本查询详解 #### 一、HQL 概述 HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库...
HQL 查询语言基础知识 HQL(Hibernate Query Language)是一种面向对象的查询语言,用于在 Hibernate 框架中查询数据库。HQL 查询语言基础知识是 Hibernate 中的基础组件之一,对于开发人员来说,掌握 HQL 查询语言...
- 可以直接在HQL中查询关联的对象,如LEFT JOIN、INNER JOIN等。 - 通过导航属性访问关联对象,无需明确指定JOIN语句。 7. **子查询** - HQL支持在SELECT、FROM、WHERE子句中使用子查询。 - 子查询可以返回单个...
HQL支持基本的查询操作如选择、更新、删除等,并且可以方便地进行对象之间的关联查询。 #### 二、HQL语句的基本结构 HQL语句的基本结构通常包括以下几个部分: 1. **SELECT**:指定要查询的数据。 2. **FROM**:...
在Hibernate中,HQL(Hibernate Query Language)是其内置的一种面向对象的查询语言,它是SQL的面向对象版本,用于检索和操作持久化对象。HQL查询的使用极大地提高了开发效率,因为它将数据操作与具体的数据库结构...
Hibernate 查询语言 HQL Hibernate 查询语言 HQL 是一种面向对象的查询语言,用于检索对象。它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地...
注意,执行`from Student, Course`这样的HQL会返回两个对象的笛卡尔积,而非简单的联合查询,通常在实际应用中很少使用。 3. 属性查询: HQL支持查询单个或多个属性。例如,查询所有学生的姓名和年龄: ```java // ...
标题"**HQL多对多的查询语句分析**"主要关注的是如何在Hibernate中使用HQL处理数据库中的多对多关联关系查询。在数据库设计中,多对多关系是最复杂的关联类型,它意味着一个实体可以与多个其他实体相关联,反之亦然...
HQL(Hibernate Query Language)是 Hibernate 中的一种强大的查询语言,它看起来很像 SQL,但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的...
**HQL查询语言基础** HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它与SQL类似,但专为面向对象编程设计。HQL允许开发者以类和对象的方式编写查询,而不是直接处理...
**HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及关联关系的查询。 ##### 默认数据库表和数据 在本文档...
而HQL则弥补了这一不足,它是一种面向对象的查询语言,能够处理复杂的多态、关联查询,并减少SQL的冗余,适用于各种关系数据库。 二、Hibernate查询语言(HQL) 1. HQL基础:HQL基于面向对象的概念,将表映射为类,...
5. **关联查询**:HQL可以轻松处理关联查询,通过`JOIN`关键字联合多个表。例如,获取每个用户的所有订单: ```java hql = "from User u join fetch u.orders"; users = session.createQuery(hql).list(); ``` 在...