2013-05-18 2 views
1

Что может привести к прекращению работы метода CriteriaQueryorderBy?setFirstResult и setMaxResult не работает с заказом By

Вот реализации:

OpenJPAEntityManager kem = OpenJPAPersistence.cast(entityManager()); 
    kem.getFetchPlan().clearFetchGroups(); 
    kem.getFetchPlan().addFetchGroup("order_search"); 

    CriteriaBuilder builder = kem.getCriteriaBuilder(); 
    CriteriaQuery<Order> query = builder.createQuery(Order.class); 
    Root<Order> order = query.from(Order.class); 
    query.select(order); 

    Predicate main_condition = buildWhereClause(builder, query, order, target_states, orderDate_from, orderDate_to, dueDate_from, dueDate_to, username); 

    query.where(main_condition); 

    query.orderBy(builder.desc(order.get("orderDate"))); 

    TypedQuery<Order> q = entityManager().createQuery(query); 

    if (firstResult != 0) 
     q.setFirstResult(firstResult); 
    if (maxResults != 0) 
     q.setMaxResults(maxResults); 

С pagniation, когда есть 15 записей, и мы хотим 5 записей на странице, он должен быть:

-page1- 1 2 3 4 5 -page2- 6 7 8 9 10 -page3- 11 12 13 14 15 

Но теперь, что мы получаем здесь is

-page1- 1 2 3 4 5 -page2- 6 7 8 9 10 -page3- 5 4 3 2 1 

Последняя страница всегда в обратном порядке на первой странице, откуда?

ответ

2

Nail it, не от меня, это post весьма полезно. Я сделал то же самое, и теперь он работает как шарм. В основном необходимо добавить первичный ключ в порядок по критериям, иначе разбиение на страницы просто полностью беспорядочно.

Проведите 4 часа, и решение будет таким простым и сложным. Работы по OpenJPA 2.2.2 и Oracle 11g, я думаю, это постоянный трюк с OpenJPA 1.2 с этой должности.

+0

Спасибо, вы спасли мне 4 часа по аналогичной проблеме, хотя мне теперь нужно найти решение –

Смежные вопросы