Java 如何限制JPA和Informix中的查询?

Java 如何限制JPA和Informix中的查询?,java,hibernate,jakarta-ee,jpa,informix,Java,Hibernate,Jakarta Ee,Jpa,Informix,当我在结果列表的第一页时,生成的查询如下: select first 10 books0_.id as id100_... 一切正常。但是,在第二页,我得到了以下错误: org.hibernate.exception.GenericJDBCException: ResultSet Type is TYPE_FORWARD_ONLY. 清单的代码如下所示: // calculating paging offset int perPage = Integer.parseInt(Constants

当我在结果列表的第一页时,生成的查询如下:

select first 10 books0_.id as id100_...
一切正常。但是,在第二页,我得到了以下错误:

org.hibernate.exception.GenericJDBCException: ResultSet Type is TYPE_FORWARD_ONLY.
清单的代码如下所示:

// calculating paging offset
int perPage = Integer.parseInt(Constants.RESULTS_PER_PAGE);
int firstResult = (page == null) ? 0 : (page - 1) * perPage;

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Books> criteria = builder.createQuery(Books.class);

Root<Books> entityRoot = criteria.from(Books.class);
criteria.select(entityRoot);

// constructing list of parameters
List<Predicate> predicates = new ArrayList<Predicate>();
...

// add the list of parameters
criteria.where(builder.and(predicates.toArray(new Predicate[]{})));

//execute query and paginate results
TypedQuery<Books> listQuery = em.createQuery(criteria);
listQuery.setFirstResult(firstResult);
listQuery.setMaxResults(perPage);

return listQuery.getResultList();
当它应该是
时,跳过前10个10
。现在如何使用JPA分页方法


我正在使用JBoss 7.1、Spring 3.2、Hibernate 4.0.1和Informix 11.70。不幸的是,Hibernate团队已经有一段时间没有更新Informix DBMS的方言了,所以Hibernate发行版中的Informix方言不支持SKIP特性。 Hibernate JIRA在使用提供的补丁更新Informix方言(已开放三年多)时遇到问题

您可以尝试用中的一个类替换Informix方言类。
只需将该文件放在您的项目中的尊敬的包目录中并进行尝试。

不幸的是,Hibernate团队很长一段时间没有更新Informix DBMS的方言,因此Hibernate发行版中的Informix方言不支持跳过功能。 Hibernate JIRA在使用提供的补丁更新Informix方言(已开放三年多)时遇到问题

您可以尝试用中的一个类替换Informix方言类。
只需将该文件放在您的项目中的尊敬的软件包目录中,然后试用即可。

页面的初始值是多少?您在何处初始化/设置此值?它的
page=0
第一次。每页的结果是10。计算页面没有什么问题,当我使用带
SKIP
FIRST
的本机查询时,它会起作用。您可以查看下面的示例,使用criteria builder实现同样的效果。页面的初始值是多少?您在何处初始化/设置此值?它的
page=0
第一次。每页的结果是10。计算页面没有什么问题,当我使用带
SKIP
FIRST
的本机查询时,它会起作用。您可以查看下面的示例,使用criteria builder实现同样的效果。
select first 20 books0_.id as id100_...