6. 连接 (join) 查询
我们也可以为相关联的实体甚至是对一个集合中的全部
元素指定一个别名 , 这时要使用关键字 join 。
连接类型:
inner join (内连接)
left outer join (左外连接)
right outer join (右外连接)
注:语句 inner join, left outer join 以及 right outer join 可以简写
。
www.sodi.com.cn
7. 连接 (join) 查询
// 内连接
String hql = "select s.stuName,c.className from Student as s join
s.classes as c";
String hql = "select s.stuName,c.className from Student as s inner
join s.classes as c";
// 左外连接
String hql = "select s.stuName,c.className from Student as s left
join s.classes as c";
String hql = "select s.stuName,c.className from Student as s left
outer join s.classes as c";
// 右外连接
String hql = "select s.stuName,c.className from Student as s right
join s.classes as c";
String hql = "select s.stuName,c.className from Student as s right
outer join s.classes as c";
www.sodi.com.cn
10. 聚集函数查询
String hql = "select count(*) from Student s";
String hql = "select max(s.stuAge),min(s.stuAge),avg(s.stuAge)
from Student as s";
以上查询结果返回单一值,所以可以使用
session.createQuery(hql).uniqueResult()
// 统计每个班级的人数
String hql = "select c.className,count(*) from Student as s inner
join s.classes as c group by c.className";
www.sodi.com.cn
12. 分页查询
setFirstResult() 从 0 开始
setMaxResults() 每页显示多少条数据
例如:
String hql = "from Student as s order by s.stuId asc";
List list = session.createQuery(hql)
.setFirstResult(0)
.setMaxResults(5)
.list();
www.sodi.com.cn