HQL支持SQL的所有关联类型
1.内关联(*)
2.外关联
3.交叉关联
内关联查询只能查询满足关联条件的对象的集合。
SQL语法:
select a.xxx, b.xxx from A a inner join B b on a.fk=b.pk
数据库表关联依靠FK.
案例:
– 查询每个员工的姓名和部门的名称
select a.empname,b.deptname from OA_employee a inner join oa_department b on a.deptno=b.deptno
HQL语法
(1)返回指定属性的内关联
select a.xxx, b.xxxx from A a inner join a.b b
(2)返回关联对象的内关联
from A a inner join a.b b
案例:
– 查询每个员工的姓名和部门的名称
select em.name, dm.name from EmployeeModel em inner join em.department dm
Hibernate Model类间关联依靠属性。
为了能查询一个对象时,将其关联的对象也要立即检索出来,HQL提供了抓取内关联查询。
语法:
from A a inner join fetch a.b b
返回的是A对象的集合
1.左外关联查询
HQL语法:
from A a left outer join a.b b
2.右外关联查询
from A a right outer join a.b b
3.全外关联查询(MySQL不支持)
from A a full outer join a.b b
1.分类汇总语句
(1) group by 子句
功能:确定分类的属性
语法:group by 属性,属性,。。。
select em.department.name, avg(em.salary) from EmployeeModel em group by em.department.name
(2) having子句
功能:对分类汇总后的结果进行筛选
语法:having 逻辑表达式
案例:
取得部门平均工资大于3000的部门的汇总工资
(部门名,汇总工资)
select em.department.name, sum(em.salary)
from EmployeeModel em
group by em.department.name
having em.department.name='财务部'
and avg(em.salary) >3000
2.分类汇总函数
(1) count()
(2) min()
(3) max()
(4) avg()
(5) sum()
1.功能:指定返回的对象的属性。
省略则返回对象。
2.语法:
select 属性,属性,…
3.案例:
返回员工对象的集合 List
from EmployeeModel
返回姓名的集合:List
select em.name from EmployeeModel em
返回年龄的集合:List
select em.age from EmployeeModel em
返回工资的集合:List
select em.salary from EmployeeModel em
返回姓名和年度对的集合:List
select em.name,em.age from EmployeeModel em
返回员工对象和部门对象对的集合:List
from EmployeeModel em inner join em.department dm
返回员工对象的集合 List
select em from EmployeeModel em inner join em.department dm
返回员工对象的集合 List
from EmployeeModel em inner join fetch em.department dm