gpt4 book ai didi

spring - setFirstResult 和 setMaxResult 不适用于 Order By

转载 作者:行者123 更新时间:2023-12-01 22:39:42 24 4
gpt4 key购买 nike

什么会导致 CriteriaQuery orderBy 方法停止工作?

实现如下:

    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);

有了分页,当有 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

最后一页总是和第一页顺序相反,这是怎么回事?

最佳答案

钉它,不是我自己,这个post很有帮助。我做了同样的事情,现在它运行起来就像一个魅力。基本上需要按标准将主键添加到顺序中,否则分页会完全困惑。

花了 4 个小时,解决方案既简单又棘手。适用于 OpenJPA 2.2.2 和 Oracle 11g,我想这是自该帖子的 OpenJPA 1.2 以来的一个不变技巧。

关于spring - setFirstResult 和 setMaxResult 不适用于 Order By,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com