Oracle OpenJPA分页(setMaxResults/setFirstResult)

Oracle OpenJPA分页(setMaxResults/setFirstResult),oracle,paging,openjpa,Oracle,Paging,Openjpa,我遇到了与中描述的相同的问题 有一个解决方案,它将主键添加到sort子句中,我认为这是可以的,但是正确的分页应该由OpenJPA自己完成。我们使用OpenJPA2.1.1和Oracle 11g 我的解决方案是在OpenJPA中进行更改: 更改SQL语句生成。实际上,是以下几点导致了所描述的问题 SELECT * FROM (SELECT r.*, ROWNUM RNUM FROM ([my statement]) r WHERE ROWNUM <= 50) WHERE RNUM >

我遇到了与中描述的相同的问题

有一个解决方案,它将主键添加到sort子句中,我认为这是可以的,但是正确的分页应该由OpenJPA自己完成。我们使用OpenJPA2.1.1和Oracle 11g

我的解决方案是在OpenJPA中进行更改:

更改SQL语句生成。实际上,是以下几点导致了所描述的问题

SELECT * FROM (SELECT r.*, ROWNUM RNUM FROM ([my statement]) r WHERE ROWNUM <= 50) WHERE RNUM > 25 
我希望:

SELECT outer.* FROM ( 
  SELECT ROWNUM rn, inner.* FROM 
    ([my statement]) 
  inner) 
outer WHERE outer.rn > 25 AND outer.rn <= 50 
为什么使用第一个?更好的表现?否则,第二个将是使用OpenJPA进行分页的正确方法


在OpenJPA中是否还有其他可能以正确的方式进行分页?

如果使用分页,则应按唯一的排序列排序!我现在添加主键作为排序标准,它工作得非常完美