JPQL分页给出了奇怪的结果

时间:2014-01-22 12:41:58

标签: oracle jpa pagination jpql

我正在使用带有oracle 10g配置的spring 3.2和Hibernate JPA。 我必须以10条记录的页面显示一个表的记录,目前共有28条记录。

所以我准备了一个持久性查询并将其设置为FirstResultMaxResult

String sql = "From instanceDetailLog Where formName='GPB' Order By instanceId";
Query query = entityManager.createQuery(sql);

query.setFirstResult(((pageNumber*recordsToFetch)-recordsToFetch));
query.setMaxResults((pageNumber*recordsToFetch));

List<Object> dataList = query.getResultList();

最初对于记录1-10,记录被正确获取。但是当我要求记录11-20的下一页时,它给了我18条记录(所有剩余的记录),在第三页我得到重复记录。

我偶然发现了article。其中描述了oracle和JPA中的分页问题。

有人可以告诉我我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

MaxResults应该是一个常量recordsToFetch。使用pageNumber * recordsToFetch,你要告诉它获取20行,这就是你获得最后18行的原因。

相关问题