1.HQL 關聯查詢的類型
HQL支持SQL的所有關聯類型
1.內關聯(*)
2.外關聯
3.交叉關聯
2.HQL內關聯查詢
內關聯查詢只能查詢滿足關聯條件的對象的集合。
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類間關聯依靠屬性。
3.HQL內關聯抓取查詢
爲了能查詢一個對象時,將其關聯的對象也要立即檢索出來,HQL提供了抓取內關聯查詢。
語法:
from A a inner join fetch a.b b
返回的是A對象的集合
4.HQL外關聯查詢
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
5.HQL分類彙總查詢
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()
6.HQL select語句
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<Object[]>
select em.name,em.age from EmployeeModel em
返回員工對象和部門對象對的集合:List<Object[]>
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