`
tanghier
  • 浏览: 1957 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

使用HQL查询

阅读更多
HQL时完全面向对象的查询语言,因此可以支持继承、多态等特性。

HQL查询依赖于Query类,每个Query实例对应一个查询对象。使用HQL查询按如下步骤进行:

(1)获取Hibernate Session对象。

(2)编写HQL语句。

(3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象。

(4)如果HQL语句包含参数,则调用Query的setXxx方法为参数赋值。

(5)调用Query对象的list等方法返回查询结果列表。

       HQL的占位符既可使用英文问号(?),这与SQL语句中的占位符完全一样;也可使用名字的占位符,使用有名字的占位符时,应该在占位符名字前增加冒号(:),如下面HQL语句所示:

select distinct p from Person p join p.myEvenets where title=:eventTitle.

       通过session的createQuery(hql)方法创建一个Query,Query对象使用SetXxx()方法为HQL参数赋值。Query的所有setXxx()方法都有两个版本,分别用于根据参数索引赋值和根据参数名字赋值,具体查阅Query接口的API说明。

       Query对象可以连续多次为HQL参数赋值,因为Hibernate Query的setXxx()方法返回值是Query本身。因此,程序通过Session创建Query后,直接多次调用setXxx方法为HQL语句的参数赋值。

       Query还包括两个方法:

(1)setFirstResult(int firstResult):设置返回的结果集从第几条记录开始。

(2)setMaxResults(int maxResults):设置本次查询返回的结果数目。

       注意:HQL语句本身是不区分大小写的。也就是说,HQL语句的关键字、函数都是不区分大小写的。但HQL语句中所使用的包名、类名、实例名、属性名都是区分大小写。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics