2013-07-30 2 views
0

У меня такая же проблема, как описано в this post.OpenJPA Paging (setMaxResults/setFirstResult)

Существует решение, которое добавляет первичный ключ к предложению sort, который, я думаю, в порядке, но правильное разбиение на страницы должно выполняться самим OpenJPA. Мы используем OpenJPA 2.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 сделать подкачку в правильном направлении?

ответ

0

Если вы используете пейджинг, вам следует заказать уникальный столбец сортировки! Теперь я добавляю первичный ключ в качестве критерия сортировки, и он отлично работает!