hql条件查询介绍



hql条件查询,条件查询通过如下3个类完成:

Criteria:代表一次查询。

Criterion:代表一个查询条件。

Restrictions:产生查询条件的工具类。

执行条件查询的步骤如下:

(1)获得Hibernate的Session对象。


(2)以Session对象创建Criteria对象。

(3)使用Restrictions的静态方法创建Criterion查询条件。

(4)向Criteria查询中体检Criterion查询条件。

(5)执行Criteria的list等方法返回结果集。

代码片段如下:

List l =[......]

Read more

hql命名查询实例介绍

hql命名查询,HQL支持将查询所用的HQL语句放入配置文件中,而不是代码中。

在Hibernate映射文件的<hibernate-mapping/>元素中使用<query/>子元素来定义命名查询,使用<query/>元素只需要指定一个name属性,指定该命名查询的名字。该元素的内容就是命名查询的HQL语句。如下配置文件片段:

<query name=”myNameQuery”>

from Person as p where p.age > ?

</query>

配置好后,通过Session提供的一[......]

Read more

HQL语句子查询实例介绍

HQL语句子查询实例介绍。以及相关的注意事项。

(1)底层数据库支持子查询,则可以在HQL语句中使用子查询。如下:

from Cat as fatcat where fatcat.weight > (select avg(cat.weight) from DomesticCat cat)

(2)子查询是多行结果集,则应该使用多行运算符。如下:

from Cat as cat where not(cat.name, cat.color) in (select cat.name, cat.color from DomesticCat cat)

(3)SQL语法中[......]

Read more

HQL语言order by语句与group by子句使用实例

order by语句

查询返回的集合根据类或组件属性的任何属性进行排序。例如:

from Person as p order by p.name,p.age

还可以使用as或desc关键字指定升序或降序的排序规则。例如:

from Person as p order by p.name asc,p.age desc

如果没有指定排序规则,默认采用升序规则。

group by子句

返回聚集值的查询可以对持久化类或组件属性的进行分组,分组使用group by子句。看下面的HQL查询语句:

select cat,color,sum(cat.weight[......]

Read more

HQL语句表达式

1、HQL语句的功能非常丰富,where子句后支持的运算符,不仅包括SQL的运算符,也包括EJB-QL的运算符等。where子句中允许使用大部分SQL支持的表达式,包括如下种类:

(1)字符串连接:如value1||value2,或使用字符串连接函数concat(value1, value2)

(2)简单的case,case…when…then…else…end和case,case when…then…else…end等。

(3)时间操作函数:current_date()、current_time、year()等。

(4)EJB-QL3.0的[......]

Read more

HQL查询的where语句实例介绍

HQL查询的where子句实例介绍。

(1)where子句用于筛选选中的结果,缩小选择的范围。如果没有为持久化实例命名别名,则可以直接使用属性名来引用属性。

如下面两条HQL语句:

from Person where name like “tom%”

form Person as p where p.name like “tom%”

(2)复合属性表达式加强了where子句的功能,例如,如下的HQL语句:

from Cat cat where cat.mate.name like “kit%”

上面语句被翻译成以下含有内连接的SQL查询:

sel[......]

Read more

HQL查询的聚集函数与多态查询

HQL查询的聚集函数与多态查询。HQL支持的聚集函数与SQL的完全相同:avg,count,max,min,sum。

实例如下的HQL语句

select count(*) from Person

select max(p.page) from Person as p

select子句还支持字符串连接符、算术连接符,以及SQL函数。例如:

select p.name||”"||p.address from Person as p

select子句也支持使用distinct和all关键字,此时的效果与SQL的效果完全相同。

HQL多态查询介绍

HQL[......]

Read more

HQL查询select子句使用实例

HQL查询的select子句使用实例。

(1)HQL select子句用在选择指定的属性或直接选择某个实体,select选择的属性一定是from后持久化类包含的属性。

实例如下:

select p.name from Person as p

(2)select可选择任意属性,不仅可选择持久化类的直接属性,也可选择组件属性包含的属性。实例如下:

select p.name.firstName from Person as p

(3)在特殊情况下,如果select后只有一项(包括持久化实例或属性),则查询得到的集合元素就是该持久化实例或属性。

(4)如果s[......]

Read more

hibernate隐式连接与显示连的区别是什么

hibernate隐式连接与显示连的区别是什么?

(1)隐式连接底层转换成SQL92的内连接,显示连接层将转换成SQL99的多表连接。

(2)隐式连接和显示连接查询后返回的结果不同。

当HQL语句中省略select关键字,用隐式连接查询返回的结果是多个被查询实体组成的集合。

当HQL语句中省略select关键字时,使用显示连接查询返回的结果也是集合,但集合元素是被查询持久化对象、所有被关联的持久化对象所组成的数组。

对于Hibernate3.2.3以后的版本,如果关联实体是单个实体或单个的组件属性,HQL依然可以似乎用英文点号(.)来隐式连接关联实体或组件;但如果[......]

Read more

Hql语句之关联和连接,显示连接与隐式连接

Hql语句之关联和连接。Hibernate使用关联映射来处理底层数据表之间的连接,程序通过Hibernate进行持久化访问时,就可利用Hibernate的关联来进行连接。

     HQL支持两种关联连接(join)的形式:隐式(implicit)与显示(explicit)。

隐式连接形式不适用join关键字,使用英文点号(.)来隐式连接来关联实体,而Hibernate底层将自动进行关联查询。如下HQL语句:

from Person p where p.myEvent.title > :title

以上的p.myEvent属性的其实就是一个持久化实体,Hibern[......]

Read more