来源:http://www.blogjava.net/fuhoujun/archive/2009/01/06/232230.html

一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有. 
要查询教拥有书"a"的学生的老师!

Hql语句:

SELECT t FROM Teacher t join t.students s join s.books b where b.name = 'a'

解释:t.students s中s并不是集合的意思,而是t的students对象的表别名,join t.students s这个hql,hibernate会翻译成两个表的内连接关系

错误写法:

SELECT t FROM teacher t where t.students.books.name = 'a'

其实道理是很显然的,t.students是一个Set,那么这个Set怎么可能有books这样的属性呢?同理books.name也不对,所以使用表间连接并给出别名t.students s,此时的对象s才有books属性,所以可以写s.books b,最后使用b.name限制查询b.name = 'a'.

另外一种写法:

SELECT t FROM Teacher t,Student s,Book b where s.id in elements(t.students) and b.id in elements(s.books) 
这种方法没有出错!不过这种方式要用子查询!

HQL多对多的查询语句相关推荐

  1. mysql hql查询语句_查询hql语句

    Hibernate-HQL 了解HQL 一.HQL定义 1.Hibernate QueryLanguage,Hibernate查询语言 2.HQL是面向对象的查询语言 3.HQL提供了丰富灵活的查询特 ...

  2. hibernate中的hql查询语句list查询所有与iterate查询所有的区别

    hibernate中的hql查询语句list查询所有与iterate查询所有的区别 list查询所有: 01,会立即产生一条select语句1select查询出来的所有语句都会被session管理, ...

  3. hql 字符串where语句_hibernate的hql查询语句总结

    4.3 使用HQL查询 Hibernate提供了异常强大的查询体系,使用Hibernate有多种查询方式.可以选择使用Hibernate的HQL查询,或者使用条件查询,甚至可以使用原生的SQL查询语句 ...

  4. hql mysql查询语句,HQL查询语言的使用介绍

    HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按如下步骤进行: 1.获取Hibernate Session对象 2.编写HQL语句 3.以HQL语句作为参数,调用Se ...

  5. mysql hql查询语句_使用Query进行HQL语句查询和SQL语句查询

    HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的. 不带参数的查询,语句是&quo ...

  6. hql 字符串where语句_Hibernate HQL查询语句总结

    1. 实体查询: 有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子: String hql="from User user "; List list=session. ...

  7. Hive基础09、HQL查询语句

    Hive基础09.HQL查询语句 目录 Hive基础08.HQL查询语句 1.基础查询语句 2.数组查询 3.map 4.struct 5.聚合查询语句 HQL查询内容全: 第一部分: Hive查询语 ...

  8. DQL查询语句约束数据库设计备份和还原

    DQL:查询语句 1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...* 排序方式:* ASC:升序,默认的.* DESC:降序 ...

  9. java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除

    hibernate执行多对多关联查询时,关联表数据被删除 本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑 S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个 ...

最新文章

  1. simulink仿真实例_MATLAB机器人运动学仿真入门
  2. Maven 私服搭建
  3. Educational Codeforces Round 88 (Rated for Div. 2) E(数学)
  4. 面趣 | 据说这道烧脑的微软面试题很奇葩,你来试试?
  5. Mac计算器的计算过程怎么看?教你一键查看运算记录!
  6. js jq 一些属性
  7. 饿了么超时20分钟_饿了么:5分钟;美团:8分钟......消费者:???
  8. ios uiwindow弹窗_iOS-UIWindow详解
  9. redis 字符串类型原子性实现方案与memcached-cas原子性性能比较
  10. 使用X-shell管理员root连接ubuntu17.10服务器拒绝密码的一个失误!
  11. UE4 蓝图入门学习笔记
  12. 数学建模--正态分布均值的假设检验
  13. 豆瓣上最受关注的 10 本书(附下载)
  14. 警告: A docBase D:\apache-tomcat-8.5\webapps\webapps\projectname inside the host appBase has been
  15. B. Ternary String
  16. 蛙蛙推荐:蛙蛙教你发明一种新语言之一--词法分析和语法分析
  17. 《穷查理宝典》思维导图
  18. 软件学院毕业生对软件学院的看法
  19. 渐变插画:使用PSPS绘制渐变风格插画
  20. android8.0应用图标适配调整_Android应用图标微技巧,8.0系统中应用图标的适配

热门文章

  1. jQuery Mobile 手动显示ajax加载器,提示加载中...
  2. win32 汇编基础概念整理
  3. dataframe保存为txt_竟然可以用 Python 抓取公号文章保存成 PDF
  4. Matlab----获取一个文件夹下所有文件名
  5. r语言 回归分析 分类变量_R语言 | 回归分析(二)
  6. java多线程详细讲解_Java多线程例子讲解
  7. C++primer 第四版6.12:练习题
  8. html5 js保存token,vue生成token并保存到本地存储中
  9. Android开发之Socket通信的方法
  10. Android开发之微信支付获取签名小工具分享