`

ResultSet may only be accessed in a forward direct

阅读更多

源码:

Query query = session.createQuery(hql);

  if(firstindex!=-1&&maxresult!=-1){
   query.setFirstResult(firstindex);
   query.setMaxResults(maxresult);
  }  
  List<T> temp = query.list();
  qr.setResultList(temp);
  qr.setTotalrecord(temp.size());

 

报错:

org.hibernate.exception.GenericJDBCException: could not execute query
 at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
 at org.hibernate.loader.Loader.doList(Loader.java:2148)
 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
 at org.hibernate.loader.Loader.list(Loader.java:2024)
 at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
 at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
 at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
 at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
 at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
 at com.util.db.BaokuQuery.getScrollData(BaokuQuery.java:31)
 at com.baokubiz.systemset.account.logic.implement.AccountServiceImpl.findByNameAndCid(AccountServiceImpl.java:852)
 at com.baokubiz.systemset.account.controllers.AccountOSAction.accountlist_unsort(AccountOSAction.java:1984)
Caused by: java.sql.SQLException: ResultSet may only be accessed in a forward direction.
 at net.sourceforge.jtds.jdbc.JtdsResultSet.checkScrollable(JtdsResultSet.java:316)
 at net.sourceforge.jtds.jdbc.JtdsResultSet.absolute(JtdsResultSet.java:713)

 

原因:

query.setFirstResult(firstindex);
query.setMaxResults(maxresult);
在sqlserver中,firstindex\maxresult两个参数不能为负数。

参考资料:http://www.iteye.com/post/153764


修改方案:

Query query = session.createQuery(hql); 

  if(firstindex>=0&&maxresult>=0){
   query.setFirstResult(firstindex);
   query.setMaxResults(maxresult);
  }  
  List<T> temp = query.list();
  qr.setResultList(temp);
  qr.setTotalrecord(temp.size());

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics