【问题标题】:The requested operation is not supported on forward only result sets Sql server hibernate仅转发结果集 Sql server hibernate 不支持请求的操作
【发布时间】:2017-03-29 09:24:22
【问题描述】:

所以我有一个可以正常工作的查询,但是当我想访问结果的第二页时,我得到了这个异常:

org.hibernate.exception.GenericJDBCException:The requested operation is not supported on forward only result sets 
Caused by : com.microsoft.sqlserver.jdbc.SQLServerException: The requested operation is not supported on forward only result sets 

这是我的代码

HibernatePage sp = new HibernatePage(pageNumber, pageSize);
sp.scrollableResults = query.scroll(ScrollMode.FORWARD_ONLY);
sp.totalElements = sp.calculateTotalElementsByList(query); 
sp.determineElements(query);

使用确定元素(查询)

private void determineElements(Query query) throws HibernateException {

    if (Integer.MAX_VALUE == this.pageNumber)
          this.pageNumber = (getTotalNumberOfElements() / this.pageSize);

   elements = query.setFirstResult((this.pageNumber * this.pageSize)-this.pageSize).setMaxResults(this.pageSize + 1).list();
      }

我正在使用hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect

她是堆栈跟踪

org.hibernate.exception.GenericJDBCException: The requested operation is not supported on forward only result sets 
        at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:52)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
        at org.hibernate.engine.jdbc.internal.proxy.AbstractResultSetProxyHandler.continueInvocation(AbstractResultSetProxyHandler.java:108)
        at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
        at com.sun.proxy.$Proxy48.absolute(Unknown Source)
        at org.hibernate.loader.Loader.advance(Loader.java:1651)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1982)
        at org.hibernate.loader.Loader.doQuery(Loader.java:829)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
        at org.hibernate.loader.Loader.doList(Loader.java:2463)
        at org.hibernate.loader.Loader.doList(Loader.java:2449)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2279)
        at org.hibernate.loader.Loader.list(Loader.java:2274)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
        at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
        at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:196)
        at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1115)
        at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
        at ma.softwork.commons.dao.impl.HibernatePage.determineElements(HibernatePage.java:205)
        at ma.softwork.commons.dao.impl.HibernatePage.getScrollPageInstanceWithTotalByList(HibernatePage.java:180)
        at ma.softwork.commons.dao.impl.HibernatePage.getHibernatePageInstance(HibernatePage.java:127)
        at ma.softwork.commons.dao.impl.HibernatePage.getHibernatePageInstance(HibernatePage.java:116)
        at ma.softwork.dao.impl.QueryBuilderFactory.rechercheContratsPagination(QueryBuilderFactory.java:332)
        at ma.per.service.contrat.ContratService.rechercheContratsPagination(ContratService.java:250)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

我错过了什么吗?

【问题讨论】:

  • 您找到解决方案了吗?

标签: java sql-server hibernate


【解决方案1】:

如果下面的表达式的值为负,你会得到这个错误,假设 this.pageNumber 为 0,那么下面的表达式的值可以是负数

(this.pageNumber * this.pageSize)-this.pageSize

【讨论】:

    【解决方案2】:

    看起来并非所有 Hibernate SQL Server Dialect 版本都单独使用可滚动结果集来进行分页。

    如果您使用标准方言,您使用的是 2000 版本。

    <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
    

    使用较新的版本可以解决此问题。

    <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 2014-02-18
      • 2012-02-18
      • 2013-01-13
      • 2011-05-04
      相关资源
      最近更新 更多