public PageInfo queryForPage(int pageSize,int page,TbStelMeg sm,TbBeg beg)//通过具体信息和sdType获得分页信息
    {
            this.stelmeg = sm;
             this.tbbeg=beg;
             
             final String hql = "from TbBeg where stelSport=? and tbStelMeg.stelId=?";
//             final String hql = "from TbBeg where tbStelMeg.stelId=? and sdType=?";    //查询语句
             System.out.println("00000000000");
             Object[] obj={beg.getStelSport(),sm.getStelId()};
             System.out.println("1111");
             int allRow = this.getHibernateTemplate().find(hql,obj).size();  //总记录数
             int totalPage = PageInfo.countTotalPage(pageSize, allRow);//设置每页显示几条  2条
             final int offset = PageInfo.countOffset(pageSize, page);    //当前页开始记录
             final int length = pageSize;
             final int currentPage = PageInfo.countCurrentPage(page);
                System.out.println("22222");
             List list = getHibernateTemplate().executeFind(new HibernateCallback()
                {
                
                public Object doInHibernate(Session session) throws HibernateException,SQLException
                {
                
                Query query = session.createQuery(hql)
                .setParameter(0, stelmeg.getStelId())
                .setParameter(1, tbbeg.getSdType());//Hibernate的分页精髓!~
                query.setFirstResult(offset);
                query.setMaxResults(length);
                List<TbBeg>  list = query.list();
                return list;
                }
                });
                
                PageInfo pageinfo = new PageInfo();
                pageinfo.setPageSize(pageSize);    
                pageinfo.setCurrentPage(currentPage);
                pageinfo.setAllRow(allRow);
                pageinfo.setTotalPage(totalPage);
                pageinfo.setList(list);
                pageinfo.init();               
                return pageinfo;
    }
    我的一个方法,然后调用时出现的异常:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.FileSystemXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer
at org.hibernate.type.StringType.toString(StringType.java:44)
at org.hibernate.type.NullableType.toLoggableString(NullableType.java:168)
at org.hibernate.pretty.Printer.toString(Printer.java:65)
at org.hibernate.engine.QueryParameters.traceParameters(QueryParameters.java:256)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:149)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at xf.dragon.dao.impl.Beg_dao$1.doInHibernate(Beg_dao.java:166)-->这是我的方法出错的地方-->List list = query.list();用范型也不好使
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
at xf.dragon.dao.impl.Beg_dao.queryForPage(Beg_dao.java:155)
at LocalTest.TestDemo.main(TestDemo.java:39)

解决方案 »

  1.   

    问题貌似在这里
                   Query query = session.createQuery(hql) 
                    .setParameter(0, stelmeg.getStelId()) 
                    .setParameter(1, tbbeg.getSdType());//Hibernate的分页精髓!~ 
    好像是从1开始的,没有0
      

  2.   

     final String hql = "from TbBeg where stelSport=" +? +"and tbStelMeg.stelId="+?; 应该这样吧
      

  3.   

    是从0开始的!
    debug下,具体看下这部分
    dragon.dao.impl.Beg_dao.queryForPage(Beg_dao.java:155) 
      

  4.   

    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer 指定页码的时候,是不是没有传整型参数过去。看看哪里有需要 用 整型的。传参数传错了类型。
      

  5.   

    确定你stelmeg.getStelId() 和 tbbeg.getSdType()的数据类型和stelSport=? and tbStelMeg.stelId=? 这2个字段类似一样,错误提示显示应该是类型不一致。
      

  6.   

    java.lang.ClassCastException: java.lang.Integer 
    类型转化异常
      

  7.   

    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer  看看你传的参数
      

  8.   

    其实是我把int类型的参数和String类型的参数的位置弄反了,呵呵谢谢大家
      

  9.   

    是不是你的hbm.xml种的对象的属性的类型配置错了。 比如说主键 你指定的java.lang.Integer,而数据库中不是number