在HQL查询中,常常面临这样一个场景,对于多表查询,是要将一个表的对象查出来还是要只需要每个表中的几个字段,最后放在一起显示?
针对上面的场景,如果需要将一个对象查出来:
HQL语句写“from 对象”即可
Session session = HibernateUtil.openSession(); List<Student> student = session.createQuery("from Student s left join fetch s.course c").list(); for(Student o:student){ if(o.getS_id() == 5){ Set<Course> course = o.getCourse() ; for(Course temp : course) System.out.println(temp.getName()); } } session.close();
如果需要查出一个表或者几个表中的字段,需要用带构造参数的查询,也称为投影查询
步骤:
1.准备一个投影类,里面放置你要的属性,比如
package bean; public class Relation { private String sname; private String cname; public Relation(String sname, String cname) { super(); this.sname = sname; this.cname = cname; } }
2)写HQL语句并测试
public void testProperty_FromTables(){ Session session = HibernateUtil.openSession(); String HQL="select new bean.Relation(s.name,c.name) from Student s " + "inner join s.course c"; List<Course> list = session.createQuery(HQL).list(); session.close(); }
最后,可以发现Course表中只有你要的字段属性,而其他字段为空。
说明一下需求分析:
1、如果需要查询一个对象,不用带select,如果两张表以上,则用fetch查询
2、如果需要查询几个字段,则用带构造函数的查询【较少使用】,不能加fetch。同时需要注意,构造函数和你要查的参数属性相对应,并且参数个数保持一致
3、在HQL语句中,from后面都是持久化对象,其他的部分都是属性而不是字段
相关推荐
在Hibernate框架中,HQL(Hibernate Query Language)是用于操作对象关系映射的查询语言,类似于SQL,但它是面向对象的。本篇文章将详细介绍在Hibernate中进行投影查询的三种主要方式:直接查询、查询返回对象以及...
- **Projections.projectionList()** 和 **Projections.max()** 用于定义查询结果的投影。 ### 4. 执行 HQL 更新操作 第四个示例展示了如何使用 HQL 执行更新操作。该方法名为 `downAllGroup`,其功能是更新一组...
SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询
Hibernate作为流行的Java ORM框架,它的查询机制是其独特之处。其中,Criteria Query允许通过对象模型进行查询,提高了代码的可读性,但不支持所有复杂的SQL操作。而HQL则弥补了这一不足,它是一种面向对象的查询...
HQL,全称为Hibernate Query Language,是Hibernate框架中的查询语言,它允许开发者以类似SQL的方式查询对象。在Java开发中,尤其是在处理大量数据持久化时,Hibernate作为一个强大的对象关系映射(ORM)工具,极大...
此外,还可以利用HQL的投影查询特性,创建一个新的对象实例: ```java List<User> users = session.createQuery("select new User(user.name, user.age) from User user").list(); for (User user : users) { ...
HQL支持多种查询功能,包括投影、约束、聚合和分组。 **投影**是HQL中的基础概念,允许选择返回的对象或对象的属性。`from`子句用于获取指定类的所有实例,例如`from Order`将返回`Order`类的所有对象,这与SQL中的...
HQL支持各种操作,如选择、投影、连接、分组、排序等,还可以进行复杂的条件查询和子查询。例如,以下是一个简单的HQL查询示例,用于获取所有年龄大于30岁的用户: ```java String hql = "FROM User WHERE age > 30...
投影函数是 HQL 中的一个基本概念,它返回查询结果中的对象或对象的属性。使用 from 和 select 子句可以完成投影操作。from 子句返回指定的类的所有实例,而 select 子句可以选择对象的某些属性。 例如,from Order...
HQL支持基本的查询操作,如选择、投影、连接、分组、排序,以及更复杂的子查询和函数调用。通过这个测试程序,我们可以了解到HQL的各种用法,例如: 1. **选择查询**:通过指定类名或别名,HQL可以获取特定实体的...
HQL提供了丰富的查询功能,包括选择、投影、连接、分组、排序等,同时也支持子查询和嵌套查询。此外,HQL还可以直接调用对象的方法,使得查询更加灵活。在实际开发中,熟练掌握HQL能够显著提高代码的可读性和可维护...
在 Hibernate 中,执行查询操作的主要方式之一是使用 Hibernate 查询语言(HQL)。 HQL 是一种面向对象的查询语言,它支持标准 SQL 的大部分功能,并添加了一些额外的功能,如对象导航、集合投影等。本文将深入探讨...
HQL (Hibernate Query Language) 是一种面向对象的查询语言,它允许开发人员以面向对象的方式编写查询,而不是直接使用SQL。HQL的关键字通常不区分大小写,但在Java类与属性的名称中则需要注意大小写的一致性。 ###...
HQL支持多种查询操作,包括选择、投影、分组、排序、连接等。例如,如果你想要根据年龄筛选用户并按姓名排序,可以这样写: ```java query = session.createQuery("from User where age > 18 order by name"); ...
投影是HQL中获取数据的基本方式,它定义了查询结果的结构。投影可以是单个对象、对象的属性或者一组属性。`from`子句用于获取指定类的所有实例,例如`from Order`将返回Order类的所有对象,这与SQL中的`SELECT * ...
使用`GROUP BY`和`ORDER BY`子句对查询结果进行分组和排序也是HQL的重要功能之一。 ```java String hql = "select user.name, COUNT(*) from User as user group by user.name order by COUNT(*) desc"; List[]>...
如果查询结果包含多个字段,并且希望将这些字段封装成一个对象,则可以使用Hibernate的投影列表功能,或者手动创建一个新的类来存储查询结果。 ### 总结 本文主要介绍了Hibernate中的连表查询方法及其在实际开发中...
【hibernate的HQL语句】是Hibernate框架中用于操作数据库的重要组成部分,它是一种面向对象的查询语言,类似于SQL,但更加强调对象的概念。HQL能够处理复杂的对象关系,如继承、多态和关联,使得在进行SSH(Spring、...
HQL支持基本的查询操作,如选择、投影、分组、排序以及连接操作。 ### 2. 基本查询结构 HQL查询的基本结构包括:从句(FROM)、选择字段(SELECT)、条件(WHERE)和排序(ORDER BY)。一个简单的HQL查询可能如下...
HQL的强大之处在于它能够充分利用面向对象的特性,如多态性、继承和组合,同时提供丰富的查询功能,包括投影、约束、聚合和分组。 ### 投影(Projection) 投影是指查询结果中包含的对象或对象的属性。在HQL中,`...