`

hql中的子查询

阅读更多
子查询:
  子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在HibernateHQL查询同样对子查询功能提供了支持。如下面代码所示:
List list=session.createQuery(“from Customer c where 1>(select count(o) from c.orders o)”).list();
上面的程序查询订单数超过1的所有客户,因此和上面子查询HQL语句对应的SQL语句为:
Select * from Customer c where 1>(select count(o.id) from Order o where c.id=o.customer_ID);
如果子查询返回多条记录,则可以使用下面关键字:
all:表示子查询语句返回的所有记录
any:表示子查询语句返回的任意一条结果
some:”any”等价
in:”=any”等价
exists:表示子查询语句至少返回一条记录
例如:查询存在一条订单价格大于100的客户
From Customer c where 100>any(select o.price from c.orders o);
如果在子查询中操作集合,HQL提供了一组操纵集合的函数和属性:
size()函数和size属性:获得集合中元素的数量
minIndex()函数和minIndex属性:对于建立了索引的集合获得最小索引值(关于集合索引参考第一部分映射值类型集合)
minElement()函数和minElement属性:对于包含基本类型的元素集合,获得集合中值最小的元素
maxElement()函数和maxElement属性:对于包含基本类型元素的集合,获得集合中值最大的元素
element()函数:获得集合中所有元素
例如:查询订单数大于0的客户
From Customer c where size(c.orders)>0;或者From Customer c where c.orders.size>0;
以上HQL语句会生成类似如下的SQL语句:
Select * from customer c where 0>(select count(o.id) from order where o. customer_ID =c.id);
注:在HQL中子查询必须出现在where子句中,而且必须用一对圆括号括起来。为什么必须要出现在where字句之后呢?其实我们大家仔细想一下也就知道了,在Hibernate中查询的任何一个实体对象都要有据可循,这个“据”就是Hibernate的主配置文件,也就是说凡是出现在HQL from字句中的实体对象,都必须要在Hibernate主配置文件中有明确的配置。所以在Hibernate中无法支持SQL语句中的那种出现在from字句之后的那种动态视图子查询。
分享到:
评论

相关推荐

    Hql语句注意事项总结

    Hql语句注意事项总结 1.在Hql中使用group by的问题 2.在count()中使用别名问题 3.关于Integer和Long的问题 4.关于参数是数组的问题

    Hibernate 课件_HQL

    我培训时用的 Hibernate 课件, 个人能力范围内精心整理,图文并茂.希望能对大家学习 Hibernate 提供帮助. 这是第三篇....子查询;数据加载方式;Sql 查询;分页查询;管理 Session;ThreadLocal 接口的使用

    Hibernate HQL教程

    1.3.4 带有ANY或ALL的子查询 17 1.4 HQL的多表查询 17 1.4.1 表之间的关联关系 17 1.4.2 表中的数据 18 1.4.3 修改持久化类 19 1.4.4 在映射文件中加入关联信息 20 1.4.5 左外连接 21 1.4.6 左外抓取连接 23 1.4.7 ...

    NHibernate查询语言(HQL)文档.

    至于关联和连接,多态(polymorphism)查询,子查询在以后具体实 例中学习。注意:HQL 关键字不区分大小写。 注意:由于篇幅有限,我在这里仅仅贴出了数据访问层的代码,就是在业务逻辑层可以直接 调用的方法。测试...

    hql语句语法详解hql语句

    下面介绍HQL语句的语法 1.from子句 2.select子句 3.聚集函数 4.多态查询 5.where子句 6.表达式 7.order by子句 8.group by子句 9.子查询语句 10.fetch关键字 11.命名查询

    Hibernate HQL查询.docx

    Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。

    Hibernate hql查询代码实例

    主要介绍了Hibernate hql查询代码实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    hibernate hql语句 投影查询的三种方式.docx

    投影查询有三种方式: 1.直接查 2.查询返回对象 3.查询返回Map键值对。。。。。。。。。。。。。。。。。。。。。。。。。。

    HQL:Hibernate Qusery Language

    HQL:Hibernate Qusery Language HQL :是面向对象的查询语言,同SQL有些相似是Hib中最常用的方式。 查询设定各种查询条件。 支持投影查询,检索出对象的部分属性。...支持子查询,嵌入式查询 支持动态绑定参数

    通用查询框架 Awake-API

    Awake框架hql解析模块,支持Hql子查询的用法: http://hi.baidu.com/jfheng/blog/item/96ad1852d338a4080cf3e318.html 用Awake开发查询、统计分页列表,简单多了 Awake 在Ajax应用上存在的小瑕疵请大虾们帮忙解决:...

    基于hibernate 通用查询框架,包含查询、分页列表 功能

    Awake框架hql解析模块,支持Hql子查询的用法: http://hi.baidu.com/jfheng/blog/item/96ad1852d338a4080cf3e318.html 上面有最新功能介绍,文档说明,另外希望大家给我留言,提供一些好的建议 通用查询页面中的...

    Awake 1.0.1 个人版,增添页面排序、xml数据解析器 等功能

    Awake框架hql解析模块,支持Hql子查询的用法: http://hi.baidu.com/jfheng/blog/item/96ad1852d338a4080cf3e318.html 上面有最新功能介绍,文档说明,另外希望大家给我留言,提供一些好的建议 通用查询页面中的...

    SQL、Hive SQL等SQL血缘解析工具

    // 具有子查询的sql String hql = "select id,name from (select id from table_1 where id={p0}) t1 inner join (select name --this is name\n from table_2) t2"; // 获取id字段的血缘 LineageNode idNode = ...

    基于hibernate 通用查询 框架 Awake 基础jar包

    查询条件承接问题,一个操作下有多个子操作,子操作查询条件需要承接父操作的查询条件,并且每个子操作都有自己的查询条件。这种问题在维护sql或hql时会很麻烦。 Awake很好的解决了上述问题,使用Awake开发查询、...

    基于hibernate 通用查询 Awake 框架 Demo 网址:http://hi.baidu.com/jfheng

    查询条件承接问题,一个操作下有多个子操作,子操作查询条件需要承接父操作的查询条件,并且每个子操作都有自己的查询条件。这种问题在维护sql或hql时会很麻烦。   Awake很好的解决了上述问题,使用Awake开发查询...

    通用查询框架(hibernate+Ajax+jstl)

    支持全部hql语法 2.可以支持Ajax用的 xml数据结构,也可以支持jsp、jstl、struts等标签,根据配置不同的数据解析器,得到不同结构的数据。 3.集成完整的分页功能。 4.查询页面的查询项和列表项都是动态的,...

    Hibernate实战(第2版 中文高清版)

     13.2.2 通过子查询预抓取集合   13.2.3 通过联结即时抓取   13.2.4 给二级表优化抓取   13.2.5 优化指导方针   13.3 高速缓存基本原理   13.3.1 高速缓存策略和范围   13.3.2 Hibernate高速缓存架构 ...

    Awake 框架 Demo 网址:http://hi.baidu.com/jfheng

    查询条件承接问题,一个操作下有多个子操作,子操作查询条件需要承接父操作的查询条件,并且每个子操作都有自己的查询条件。这种问题在维护sql或hql时会很麻烦。   Awake很好的解决了上述问题,使用Awake开发查询...

Global site tag (gtag.js) - Google Analytics