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 ,不知道是不是用他后就不能用这个分页了。以前我给移动做项目的时候就是这样写的就没有问题,现在出现了问题,真是急死了。
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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语句啊

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧