2012HQL超级最新收集大全套书.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE/NUMPAGES

hibernate?HQL大全aa(1)

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

15.1.大小写敏感性问题?除了Java类与属性的名称外,查询语句对大小写并不敏感。所以SeLeCT与sELEct以及SELECT是相同的,但是org。hibernate.eg。FOO并不等价于org.hibernate.eg。Foo并且foo。barSet也不等价于foo。BARSET.?本手册中的HQL关键字将使用小写字母。很多用户发现使用完全大写的关键字会使查询语句的可读性更强,但我们发现,当把查询语句嵌入到Java语句中的时候使用大写关键字比较难看。

?15。2.from子句??Hibernate中最简单的查询语句的形式如下:

frot?

该子句简单的返回eg。Cat类的所有实例.通常我们不需要使用类的全限定名,因为auto-import(自动引入)是缺省的情况。所以我们几乎只使用如下的简单写法:?

fromCat??大多数情况下,你需要指定一个别名,原因是你可能需要在查询语句的其它部分引用到Cat??fromCatascat?

这个语句把别名cat指定给类Cat的实例,这样我们就可以在随后的查询中使用此别名了。关键字as是可选的,我们也可以这样写:?

fromCatcat

?子句中可以同时出现多个类,其查询结果是产生一个笛卡儿积或产生跨表的连接。??fromFormula,Parameter?

fromFormulaasform,Parameterasparam

?查询语句中别名的开头部分小写被认为是实践中的好习惯,这样做与Java变量的命名标准保持了一致(比如,domesticCat).??15.3.关联(Association)与连接(Join)

我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名,这时要使用关键字join.??fromCatascat

???innerjoincat。mateasmate

???leftouterjoincat。kittensaskitten?

fromCatascatleftjoincat。mate。kittensaskittens

?fromFormulaformfulljoinform.parameterparam

?受支持的连接类型是从ANSISQL中借鉴来的。

???*?

?????innerjoin(内连接)????*

??????leftouterjoin(左外连接)????*

?????rightouterjoin(右外连接)????*???????fulljoin(全连接,并不常用)?

语句innerjoin,leftouterjoin以及rightouterjoin可以简写。??fromCatascat

???joincat。mateasmate

???leftjoincat.kittensaskitten??还有,一个”fetch”连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接与延迟声明(lazydeclarations)。查看第20.1节“抓取策略(Fetchingstrategies)以获得等多的信息.

fromCatascat????innerjoinfetchcat.mate

???leftjoinfetchcat。kittens??一个fetch连接通常不需要被指定别名,因为相关联的对象不应当被用在where子句(或其它任何子句)中。同时,相关联的对象并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们.??注意fetch构造变量在使用了scroll()或iterate()函数的查询中是不能使用的.最后注意,使用fulljoinfetch与rightjoinfetc

文档评论(0)

yuguanyin2015 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档