你看 
int currentPage=(currentPageStr==null)?0:Integer.parseInt(currentPageStr);
你看你自己的这个三元运算符,当为空的时候为0qy.setFirstResult((currentPage-1)*pageSize);这个时候(currentPage-1)*pageSize 不为负了吗改成这样,当前页 默认为1
int currentPage=(currentPageStr==null)?1:Integer.parseInt(currentPageStr);我建议你吧分页信息封装成对象,你这么写条理性太差

解决方案 »

  1.   

    你的jdbc驱动不支持,可能太旧了或者版本不符,或者你数据库补丁包没打到sp4.
      

  2.   

    我打了补丁的!包也是mssqlserver.jar msutil.jar msbase.jar这三个,应该是最新的吧!
      

  3.   

    不过我记的sql server 没有自带的数据库分页方法,hibernate可以?
      

  4.   

    sql驱动还有一个只要一个jar包的。
      

  5.   

    这段代码本来是正确的,但是放到Struts就报错,是怎么回事?
    int pageSize=5;
    int currentPage=2;
    Query qy=session.createQuery("from Product");
    int count=qy.list().size();
    int totalPage=(count-1)/5+1;
    System.err.print(totalPage);
    qy.setFirstResult((currentPage-1)*pageSize);
    qy.setMaxResults(pageSize);
    List list=qy.list();
    for(int i=0;i<list.size();i++){
    Product product=(Product)list.get(i);
    System.err.println(product.getMember().getMemberName());
    }报错:
    [18:37:47.039] Dispatch[/product] to method pagination returned an exception
    [18:37:47.039] java.lang.reflect.InvocationTargetException
    [18:37:47.039]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [18:37:47.039]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [18:37:47.039]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [18:37:47.039]  at java.lang.reflect.Method.invoke(Method.java:324)
    [18:37:47.039]  at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
    [18:37:47.039]  at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
    [18:37:47.039]  at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    [18:37:47.039]  at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    [18:37:47.039]  at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    [18:37:47.039]  at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    [18:37:47.039]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:115)
    [18:37:47.039]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    [18:37:47.039]  at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
    [18:37:47.039]  at com.filters.Character.doFilter(Character.java:24)
    [18:37:47.039]  at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    [18:37:47.039]  at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
    [18:37:47.039]  at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
    [18:37:47.039]  at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
    [18:37:47.039]  at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
    [18:37:47.039]  at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
    [18:37:47.039]  at com.caucho.util.ThreadPool.run(ThreadPool.java:433)
    [18:37:47.039]  at java.lang.Thread.run(Thread.java:534)
    [18:37:47.039] Caused by: java.lang.NoClassDefFoundError: antlr/ANTLRException
    [18:37:47.039]  at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:35)
    [18:37:47.039]  at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:72)
    [18:37:47.039]  at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
    [18:37:47.039]  at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
    [18:37:47.039]  at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    [18:37:47.039]  at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    [18:37:47.039]  at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
    [18:37:47.039]  at com.jgssdw.product.service.ProductDuration.pagination(ProductDuration.java:58)
    [18:37:47.039]  at com.jgssdw.product.action.ProductAction.pagination(ProductAction.java:41)
    [18:37:47.039]  ... 22 more
      

  6.   

    如果不要:
    qy.setFirstResult((currentPage-1)*pageSize); 
    qy.setMaxResults(pageSize); 
    这两句就正确了!
      

  7.   

    antlr.jar包没有考到项目的web-inf/lib
      

  8.   

    mssqlserver.jar msutil.jar msbase.jar  也有新的和旧的,看看你的包的大小,似乎有个是279k吧或者你干脆换成最新的驱动包得了,就一个sqljdbc.jar,就完事了