2013-05-18 23 views
1

工作有什麼能引起CriteriaQueryorderBy方法停止工作?setFirstResult和setMaxResult不能很好地與順序按

這裏是實現:

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 

但現在我們來到這裏是

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

最後一頁始終是第一頁的相反順序,怎麼回事?

回答

2

指甲它,而不是由我自己,這是post相當有幫助。我做了同樣的事情,現在它像魅力一樣運行。基本上都需要通過標準,否則分頁只是完全搞砸添加主鍵中的順序。

花4小時,將溶液那麼簡單和棘手。在OpenJPA的2.2.2和Oracle 11g的作品,我猜是的,因爲OpenJPA 1.2從後一個恆定的把戲。

+0

謝謝你救了我的一個類似的問題4個小時,雖然我現在必須找到一個解決方案 –

相關問題