热门IT资讯网

六、hibernate之HQL

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,一. HQL1. 大小写HQL语句本身和SQL一样不区分大小写, 但其中的类名, 属性名, (绑定参数的)数据区分大小写.2. 从类中而不是从表中操作如果类有子类, 会连同子类一起查询, 不论子类是否

一. HQL

1. 大小写

HQL语句本身和SQL一样不区分大小写, 但其中的类名, 属性名, (绑定参数的)数据区分大小写.

2. 从类中而不是从表中操作

如果类有子类, 会连同子类一起查询, 不论子类是否和父类或者子类之间是否映射的同一张表.

3. 类别名, 属性列表, Where条件, distinct, order by , group by...having
  • 从类中查询, 可以给类名加别名.(类似于SQL, 其中as可以省略). 注意: SELECT e From Employee as e是正确的, 但是SELECT Employee From Employee 是错误的, 可以直接用From Employee.
  • 可以只查询实体的部分属性, 类似于SQL的查询列列表, 如果方法返回的是一个列表, 列表中的元素为Object(单个属性查询时)或者Object[](多个属性查询时), 需要根据具体类型做强制转换.
  • 属性也可以加别名new, 但必须带上as (Hibernate 3.2.1 以后可用.)
  • 也可以使用Where过滤数据, 同SQL一样支持(以及通配符 % _ ) :

=, <>, >, <, >=, <=, [not] in, is [not] null, [not] like, [not] between ... and..

  • 支持SQL函数和distinct关键字
  • 支持order by , group by... having关键字
4. Hibernate2 的find的参数绑定
5. Hibernate3 的DML 性质的HQL

String dmlHql = "update User set sex='Female' where id='2' ";

Query query = session.createQuery(dmlHql);

int changerow = query.execuyeUpdate();

dmlHql = "delete User where id='6' ";

query = session.createQuery(dmlHql);

changerow= query.execuyeUpdate();

.... //commit ...

6. 联合查询

支持inner join, left outer join, right outer join , full join

7. 子查询

支持子查询

0