我写了个通用的方法,可以根据自己传入的HQL作相应的查询, 问题是如何得到 总记录数呢? : public PageModel searchByHql(PageModel pageModel, String hql) {
List list = new ArrayList();
final int pageNo = pageModel.getPageNo();
final int pageSize = pageModel.getPageSize();
try {
Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession();
list = session.createQuery(hql).setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list();
pageModel.setTotalRecords(this.getTotalRecords(hql));
pageModel.setList(list);
}catch(Exception e) {
e.printStackTrace();
throw new AppException("查询异常");
}
return pageModel;
}如代码中的红色部分 本来我写一个方法 select count(*) +hql 但是很多hql语句中都有 order by等 就查不出来啊!诸位前辈有什么好办法不,最好有一个通用的方法,
最好不是先把所有的都查出来 在取大小
解决方案 »
- xfire webservice要实现天气预报,怎么获得返回的数据呢?
- springframework Order 该怎么理解?
- tomcat下的工程想转到resin下出问题了!哪位大哥帮下忙。
- 急!!如何将RTF格式文件内容写入ORACLE?
- http status 500
- 谁用过JMSN来开发JAVA的MSN应用啊?为什么现在登陆不了,出现911错误?
- proxool Attempt to register duplicate pool called 'dbconnpool'问题请教
- 奇怪的报错,高薪聘请高手,帮助回答,会付报酬的,QQ:81832527
- 高分索求:commons FileUpload上传代码,要直接写进数据库的,
- Java接口和抽象类
- 求助:Struts验证错误显示
- 关于hql查询生日的问题
Long totalRecords = 0L;
String s1; int i = hql.toLowerCase().indexOf("from");
int j = hql.toLowerCase().indexOf("order by");
if (j > 0)
s1 = (new StringBuilder()).append("select count(*) ").append(
hql.substring(i, j)).toString();
else
s1 = (new StringBuilder()).append("select count(*) ").append(
hql.substring(i, hql.length())).toString();
try {
totalRecords = (Long) this.getSession().createQuery(s1).uniqueResult();
return totalRecords.intValue();
} catch (RuntimeException e) {
return -1;
}
}