openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Mader (JIRA)" <>
Subject [jira] [Commented] (OPENJPA-2416) setFirstResult/setMaxResults (Paging) with Oracle
Date Wed, 31 Jul 2013 12:33:48 GMT


Andreas Mader commented on OPENJPA-2416:

Ok, I just tried again - we have to take a unique sort column to solve this issue. We are
going to implement this in our framework to avoid those problems.
> setFirstResult/setMaxResults (Paging) with Oracle
> -------------------------------------------------
>                 Key: OPENJPA-2416
>                 URL:
>             Project: OpenJPA
>          Issue Type: Improvement
>          Components: query
>    Affects Versions: 2.1.1
>            Reporter: Andreas Mader
> We are using OpenJPA with Oracle 11g Database. For Paging we use setFirstResult and setMaxResults
to Page through the result set.
> Lets take an example: PageSize 25.
> first Statement: firstResult: 0; maxResults: 26 (1 more to check if it is truncated)
> SQL generated: 
> SELECT * FROM ([my statement]) WHERE ROWNUM <= 26
> second Statement: firstResult: 25; maxResults: 26
> SQL generated: 
> SELECT * FROM (SELECT r.*, ROWNUM RNUM FROM ([my statement]) r WHERE ROWNUM <= 50)
> The way limiting the resultset for paging is sometimes not correct. The last result of
the statement should be equal to the first result of the new page - but it isn't always. If
the sorting is done on a non-unique column in the database, there are different sortings in
the resultset of these two statements. I don't know why it is done this way, I would prefer
the following statement (this works for all values of firstResult and maxResults with non-unique
sort column):
> SELECT outer.* FROM (
>   SELECT ROWNUM rn, inner.* FROM 
>      ([my statement])
>   inner)
> outer WHERE outer.rn > 25 AND outer.rn <= 50

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message