A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-20 12:16  /  1329 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Hibernate查询语言
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。
大小写敏感性问题
除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以 SeLeCT 与 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等价于 org.hibernate.eg.Foo 并且 foo.barSet 也不等价于 foo.BARSET。
本手册中的HQL关键字将使用小写字母. 很多用户发现使用完全大写的关键字会使查询语句 的可读性更强, 但我们发现,当把查询语句嵌入到Java语句中的时候使用大写关键字比较难看。
关联(Association)与连接(Join)
我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名, 这时要使用关键字join。
1. from Cat as cat  
2. inner join cat.mate as mate  
3. left outer join cat.kittens as kitten  
4. from Cat as cat left join cat.mate.kittens as kittens  
5. from Formula form full join form.parameter param
受支持的连接类型是从ANSI SQL中借鉴来的。
◆inner join(内连接)
◆left outer join(左外连接)
◆right outer join(右外连接)
◆full join (全连接,并不常用)
还有,一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接 与延迟声明(lazy declarations)。

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
学习~{:soso_e160:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马