在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后面都是持久化对象,其他的部分都是属性而不是字段
相关推荐
投影查询有三种方式: 1.直接查 2.查询返回对象 3.查询返回Map键值对。。。。。。。。。。。。。。。。。。。。。。。。。。
SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询
数据查询与检索是Hibernate中的一个亮点。要对其他ORM实现而言,Hibernate提供了灵活多样的查询机制。 *标准化对象查询(Criteria Query):以对象的方式进行查询,...缺点:不够成熟,不支持投影(projection)或统
HQL:Hibernate Qusery ...支持投影查询,检索出对象的部分属性。 支持分页查询,允许使用having和group by 提供内制的聚集函数,sum(),min(),max() 能调用用户的自定义SQL 支持子查询,嵌入式查询 支持动态绑定参数
投影查询(只获取部分字段的结果) // 7.聚集函数使用(聚合函数)(count、sum、avg、max、min等) // 8.TOP N查询(返回n条记录) // 9.命名查询 ———————————————— 原文链接:...
14.2 基本的HQL和JPA QL查询 14.2.1 选择 14.2.2 限制 14.2.3 投影 14.3 联结、报表查询和子查询 14.3.1 联结关系和关联 14.3.2 报表查询 14.3.3 利用子查询 14.4 小结 第15...
12. HQL: NHibernate查询语言 12.1. 大小写敏感性问题 12.2. from子句 12.3. 关联(Association)与连接(Join) 12.4. select子句 12.5. 聚集函数 12.6. 多态查询 12.7. where子句 12.8. 表达式 12.9. order by子句 ...
18.2 投影查询 18.3 报表查询 18.3.1 使用聚集函数 18.3.2 分组查询 18.3.3 优化报表查询的性能 18.4 高级查询技巧 18.4.1 动态查询 18.4.2 集合过滤 18.4.3 子查询 18.4.4 本地SQL查询 18.4....
18.2 投影查询 18.3 报表查询 18.3.1 使用聚集函数 18.3.2 分组查询 18.3.3 优化报表查询的性能 18.4 高级查询技巧 18.4.1 动态查询 18.4.2 集合过滤 18.4.3 子查询 18.4.4 本地SQL查询 18.4....
18.2 投影查询 18.3 报表查询 18.3.1 使用聚集函数 18.3.2 分组查询 18.3.3 优化报表查询的性能 18.4 高级查询技巧 18.4.1 动态查询 18.4.2 集合过滤 18.4.3 子查询 18.4.4 本地SQL查询 18.4....
18.2 投影查询 18.3 报表查询 18.3.1 使用聚集函数 18.3.2 分组查询 18.3.3 优化报表查询的性能 18.4 高级查询技巧 18.4.1 动态查询 18.4.2 集合过滤 18.4.3 子查询 18.4.4 本地SQL查询 18.4....
12. HQL: NHibernate查询语言 12.1. 大小写敏感性问题 12.2. from子句 12.3. 关联(Association)与连接(Join) 12.4. select子句 12.5. 聚集函数 12.6. 多态查询 12.7. where子句 12.8. 表达式 12.9. order by子句 ...
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 ...
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...