Code Bye

hibernate如何汇总分页查询

 

//学生

public class User {
	private Integer uid;
	//用户名
	private String username;
	//注册时间
	private Date regDate;
	//课程列表
	@OneToMany(cascade=CascadeType.REFRESH)  
    @JoinColumn(name="user_id")
	private List<Course> clist = new ArrayList<Course>();
}

//课程

class Course {
	private Integer cid;
	//课程
	private String coursename;
	//分数
	private Integer score;

	@ManyToOne(cascade = CascadeType.REFRESH)
	@JoinColumn(name="user_id")
	private User user;
}

学生和课程是一对多的关系

现在要查询总分数在400到500(400<=x<=500)的用户按注册时间desc排序,且要分页
如何不用传统的SQL语句,就用面向对象的方法 或者 HQL的方式

求思路?


20分
String hql=”select c.user from Course c where c.score>400 and c.scroe<500 order by desc”;
session.createQuery(hql).setFirstResult(xx).setMaxResults(xx).list();

setFirstResult是从第几条开始,setMaxResults是每次取几条,和mysql的limit的两个参数类似。

引用 1 楼 wlwlwlwl015 的回复:

String hql=”select c.user from Course c where c.score>400 and c.scroe<500 order by desc”;
session.createQuery(hql).setFirstResult(xx).setMaxResults(xx).list();

setFirstResult是从第几条开始,setMaxResults是每次取几条,和mysql的limit的两个参数类似。

你好,可能是我没有说明白

是每个学生的总分数在400 -500之间,不是每个课程的分数在400-500
类似的sql是
select a.id,sum(b.score) score
from user a,course b
where a.id=b.userid
group by a.id
having sum(b.score) between 400 and 500


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hibernate如何汇总分页查询