用SSH写分页的时候,数据库使用JTDS1.2连接的,然后就爆这个错误
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select expressset0_.userid as userid6_, expressset0_.username as username6_, expressset0_.password as password6_, expressset0_.useremail as useremail6_, expressset0_.registertime as register5_6_, expressset0_.integral as integral6_, expressset0_.role as role6_, expressset0_.userstatus as userstatus6_ from loilituanweb.dbo.express_set_user expressset0_]; SQL state [24000]; error code [0]; ResultSet may only be accessed in a forward direction.; nested exception is java.sql.SQLException: ResultSet may only be accessed in a forward direction.
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
com.explink.dao.impl.UserDaoimpl.getAllUser(UserDaoimpl.java:66)
com.explink.service.impl.UserServiceImpl.queryForPage(UserServiceImpl.java:52)
com.explink.web.action.UserAction.userList(UserAction.java:73)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
root cause 
java.sql.SQLException: ResultSet may only be accessed in a forward direction.
net.sourceforge.jtds.jdbc.JtdsResultSet.checkScrollable(JtdsResultSet.java:316)
net.sourceforge.jtds.jdbc.JtdsResultSet.absolute(JtdsResultSet.java:713)
org.apache.commons.dbcp.DelegatingResultSet.absolute(DelegatingResultSet.java:335)
org.hibernate.loader.Loader.advance(Loader.java:1502)
org.hibernate.loader.Loader.getResultSet(Loader.java:1817)...public List getAllUser(final String hql, final int offset, final int length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}public PageBean queryForPage(int pageSize, int page) {
final String hql = "from ExpressSetUser";// 查询语句
int allRow = userdao.getAllUserCount(hql);
int totalPage = PageBean.countTotalPage(pageSize, allRow);// 总页数
final int offset = PageBean.countOffset(pageSize, page);// 当前页开始记录
final int length = pageSize;// 每页记录数
final int currentPage = PageBean.countCurrentPage(page);
List<ExpressSetUser> list = userdao.getAllUser(hql, offset, length);// "一页"的记录
// 把分页信息保存到Bean中
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
} public String userList() throws Exception {
this.pageBean = userservice.queryForPage(16, page);
return SUCCESS; }

解决方案 »

  1.   

    我觉得你需要看一下你的配置文件中sessionFactory的配置。上面报的错误时数据库连接时的问题,没有发现query。
      

  2.   

    int allRow = userdao.getAllUserCount(hql);
    这个里面的方法执行错误了啊 你在查查是什么语句问题不 
      

  3.   

    setFirstResult(X)
    x不能为负数
      

  4.   

    自家把 show_sql 打开看看转换后的SQL就知道了
      

  5.   

    路过,看看。楼主感兴趣的话可以加入59673719(IT精英),大家相互交流,相互学习。Good luck。
      

  6.   

    你得一步一步测试一下。首先看你的sessionFactory是否正确。
      

  7.   

    java.sql.SQLException: ResultSet may only be accessed in a forward direction. 有2种原因1. 你传入的起始页有负数。2. 你传入的起始页大于结束页 (例如从第5页到第2页)
      

  8.   

    sql有误。打印一下sql看下吧。
      

  9.   

    java.sql.SQLException: ResultSet may only be accessed in a forward direction.  有2种原因1. 你传入的起始页有负数。2. 你传入的起始页大于结束页 (例如从第5页到第2页)
      

  10.   

    把输出的sql语句在工具环境下带参数执行一下。看看有没有问题。
      

  11.   

    java.sql.SQLException: ResultSet may only be accessed in a forward direction. 有2种原因1. 你传入的起始页有负数。2. 你传入的起始页大于结束页 (例如从第5页到第2页)
      

  12.   

    用hibernate分页 只要 一个 max  start 2个参数就行了。。