Hql语句之关联和连接。Hibernate使用关联映射来处理底层数据表之间的连接,程序通过Hibernate进行持久化访问时,就可利用Hibernate的关联来进行连接。
隐式连接形式不适用join关键字,使用英文点号(.)来隐式连接来关联实体,而Hibernate底层将自动进行关联查询。如下HQL语句:
from Person p where p.myEvent.title > :title
以上的p.myEvent属性的其实就是一个持久化实体,Hibernate底层隐式地自动进行连接查询。
显示连接则需要使用xxx join关键字,例如如下语句:
//使用显示连接
from Person p
inner join p.myEvent event
where event.happenDate < :endDate
使用显示连接时,可以为相关联的实体,甚至是关联集合中的全部元素指定一个别名。
Hibernate支持的HQL连接类型,可使用如下几种连接方式:
inner join(内连接),可简写成join。
left outer join(左外连接),可简写成left join。
right outer join(右外连接),可简写成right join。
full join(全连接),并不常用。
使用显示连接时,还可通过HQL的with关键字来提供额外的连接条件,例如如下HQL语句:
from Person p
inner join p.myEvent event
with p.id > event.id
where event.happenDate < :endDate