hql 分页的一个问题,进来看看啊。急。。。。

zhangjian420 2010-09-17 07:51:51

Session session = getSession();
try {
if (page.getTotal() == -1) {
// 第一次要查询记录总数
String hqlcount = "select count(*) from Task t where 1=1 "+ sb.toString();
Long total = (Long) getHibernateTemplate().find(hqlcount).get(0);
page.setTotal(total.intValue());
} else {
page.adjustStartPage();
}

// 查询结果不为空则对集合进行排序
if (page.getTotal() > 0 || !page.getQueryTotal()) {

String hqlsString="select t from Task t left join fetch t.taskType tt left join fetch t.casTaskTaskGroups cttg left join fetch cttg.taskGroup where 1 = 1 " + sb.toString();
//String hqlsString = "select t from Task t left join fetch t.taskType tt where 1=1 " + sb.toString();
if (StringUtils.isBlank(taskQueryVO.getPropertyName())) {
hqlsString += "order by t.id";
} else {
if (taskQueryVO.getAscending().equals("desc")) {
hqlsString += "order by t." + taskQueryVO.getPropertyName() + " desc";
} else {
hqlsString += "order by t." + taskQueryVO.getPropertyName() + " asc";
}
}
// 返回当前页的信息

Query query = session.createQuery(hqlsString.toString());
query.setFirstResult(page.getFirstResultNumber());
query.setMaxResults(page.getSize());
return query.list();

//return (List<Task>) getObjectList(page, hqlsString);
} else {
return Collections.EMPTY_LIST;
}
} catch (Exception e) {
e.printStackTrace();
throw new BusinessLogicException("查询任务失败");
}

这是我的hql分页查询的时候写的东西,我是一页显示5条。
调试的时候这里面的page对象里面的值都是正确的,然后正确执行,
用hibernate输出的sql语句如下:
select ....... from talbe where 1=1 order by task0_.task_type_id desc
当我点击下一页的时候 还是这样的因此我就断定这个分页代码根本没有执行。
可是我找不到原因啊!!
高手看到时候注意我这里有用到 left join fetch ,不知道是不是用他后就不能用这个分页了。以前我给移动做项目的时候就是这样写的就没有问题,现在出现了问题,真是急死了。
...全文
156 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
futrueing 2010-09-20
HIBERNATE不是自带一个分页函数了,如果不喜欢,可以用其他大虾的,有些大虾写得很好了~
回复
yonghenghxq 2010-09-20
俭兄,打个断点跟踪下看,我很怀疑是那个fecth的影响。
回复
hackerster 2010-09-18
你用的是mysql。hibernate的方言应该改了吧。如果你怀疑是left join fetch的问题可以换成其它的额。或者干脆先去掉试试。
回复
woshibjy2 2010-09-18
SB貌似实体类
回复
liudun1988 2010-09-18
String hqlcount = "select count(*) from Task t where 1=1 "+ sb.toString();
这句中的sb是什么啊?有这个值吗?

回复
zhangjian420 2010-09-18
变了,这一点我敢保证
回复
wangningspeel 2010-09-17
page.getFirstResultNumber()应该相应的改变了吧?
回复
zhangjian420 2010-09-17
是不是java控制台不输出limit语句啊
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-09-17 07:51
社区公告
暂无公告