代码如下:
public List find(final String[] conditions, final int start, final int recordsPerPage) throws DataAccessException {
return this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session){
StringBuffer sb=new StringBuffer("");
sb.append("select d from TWorkbudget d ");
sb.append("where d.iyear="+conditions[0]+" ");
sb.append("and d.imonth="+conditions[1]+" ");
sb.append("order by d.ctype ");
Query q=session.createQuery(sb.toString());
if (recordsPerPage != -1) {
q.setFirstResult(start);
q.setMaxResults(recordsPerPage);
}
System.out.println("分页----------------");
return q.list();
}
});
}查出来的结果少了啊,比数据库的少啊,谁帮忙看看,小弟在此谢谢了!
public List find(final String[] conditions, final int start, final int recordsPerPage) throws DataAccessException {
return this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session){
StringBuffer sb=new StringBuffer("");
sb.append("select d from TWorkbudget d ");
sb.append("where d.iyear="+conditions[0]+" ");
sb.append("and d.imonth="+conditions[1]+" ");
sb.append("order by d.ctype ");
Query q=session.createQuery(sb.toString());
if (recordsPerPage != -1) {
q.setFirstResult(start);
q.setMaxResults(recordsPerPage);
}
System.out.println("分页----------------");
return q.list();
}
});
}查出来的结果少了啊,比数据库的少啊,谁帮忙看看,小弟在此谢谢了!
解决方案 »
- 如何在spring mvc下修改json的输出
- 将字符转换为int 基础问题
- lazy=true不起作用!!!!!!!!!!
- 高分!!!求JSP连接ORACLE 10数据库的bean
- 如何在%CATALINA_HOME%/conf/server.xml中创建虚拟目录myapps
- war包发布到一台服务器上(HPserver+tomcat),登陆时IE右下角的隐私报告提示Cookie阻挡。该war包发布到其它服务器上就ok。why?
- 菜鸟问题
- JBuilder和Delphi的第三方控件能不能混用?
- jsp用那个服务器执行?
- 学习SpringMVC有什么好的方法推荐?
- Java数据库更行java.lang.NullPointerException异常
- 在线跪等:请教Dreamweaver一些问题
System.out.println(sb.toString());
Query q=session.createQuery(sb.toString());
这一句有问题,session接口的createQuery()方法的参数是以from开头的,如果要加上select * 的话就用createSQLQuery()方法。
另外检查下你的start ,recordsPerPage 查询出来的是从start开始,总共recordsPerPage 条记录,不会将所有的记录查出来的,如果将所有的记录查出来再选择合适的显示,那就不叫分页了。
之前关于上面的那个问题,我有了解决问题的方法了,但是不知道原理是什么。
之前的问题症结是这样的:查出来的数据,和数据库中符合条件的数据不一致,也就是说用上面代码查出来的匹配记录比正常写sql语句查出来的记录少了一条,而且还多了一条重复的。
我现在是这样解决的:
sb.append("select d from TWorkbudget d ");
sb.append("where d.iyear="+conditions[0]+" ");
sb.append("and d.imonth="+conditions[1]+" ");
sb.append("order by d.ctype ");
Query q=session.createQuery(sb.toString());
上段代码中,倒数第二句:sb.append("order by d.ctype ");把这句去掉,这样就会把符合where条件语句的全部记录取出来了,而且不会多一条重复的数据。