Query query = entityManager.createQuery("select distinct(id) From Table where plant=?1").setParameter(1, plant);
query.setFirstResult((pageNo-1) * pageSize);
query.setMaxResults(pageSize);
List<String> Ids = query.getResultList();
此代码在 SQL Server 2008 上运行良好,但是当我将数据库从 2008 年迁移到 2014 年时,出现以下错误:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The requested operation is not supported on forward only result sets.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:170)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.throwNotScrollable(SQLServerResultSet.java:376)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetIsScrollable(SQLServerResultSet.java:399)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.absolute(SQLServerResultSet.java:1474)
at org.jboss.jca.adapters.jdbc.WrappedResultSet.absolute(WrappedResultSet.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.hibernate.engine.jdbc.internal.proxy.AbstractResultSetProxyHandler.continueInvocation(AbstractResultSetProxyHandler.java:104)
... 170 more
我尝试过以下操作:
1. 将 jdbc 驱动程序从 sqljdbc4.0.jar
更改为 sqljdbc4.2.jar
。
LIMIT
在 SQL Server 中不受支持
字符串查询=“从表限制中选择不同的ID” + 偏移量 + ", "+ noOfRecords;
ROW_NUMBER()
不是一个好的解决方案,因为我想要不同的记录
最佳答案
查看 Wrong hibernate dialect for MSSQL 2014 。我认为这可能与为 SQL Server 2014 的 Hibernate 解决的错误方言有关
关于java - setMaxResult 无法在带有 Hibernate 的 MSSQL Server 2014 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32495157/