原文地址:http://blog.csdn.net/xb12369/article/details/8638683

子查询:
  子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持。如下面代码所示:
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字句之后的那种动态视图子查询。

最新文章

  1. ASP.NET Core服务器综述
  2. nyoj_34_韩信点兵
  3. 2014 Super Training #10 C Shadow --SPFA/随便搞/DFS
  4. linux下IPTABLES配置
  5. 常用自动化测试工具介绍(支持B/S、C/S)
  6. JSTL获取list的大小,jstl获取list 的长度,EL表达式获取list的长度,EL表达式获取list大小
  7. 参数计数不匹配,未处理System.Reflection.TargetParameterCountException
  8. Java中equals和“==””的区别,String特殊
  9. mysql不能链接远程,报(Host '***.***.***.***' is not allowed to connect to this MySQL server)
  10. android脚步--Relativelayout设置
  11. 【学习进步之路】-【浏览器兼容】透明背景图IE、360浏览器不兼容
  12. 树的常见算法&图的DFS和BFS
  13. 保存数据到sdcard中去
  14. Centos7 下 tty2等文字窗口的中文乱码问题分析
  15. python 条件分支与循环
  16. 读书笔记-iOS核心动画高级技巧
  17. Vue笔记:webpack项目vue启动流程
  18. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA
  19. MVC的简单分页【转】
  20. bzoj3601

热门文章

  1. .NET Core全面扫盲贴
  2. 如何在虚拟机安装桌面Ubuntu
  3. java基础知识 多线程
  4. Atitit.log日志技术的最佳实践attilax总结
  5. windows 7下React Native环境配置
  6. 网址http换成https ----js
  7. 深度剖析 | 基于大数据架构的BI应用
  8. DarkTrack 4 Alien Version Released RAT 下载地址&视频教程
  9. WWDC2016 观后杂感
  10. NSURLSession网络请求