gpt4 book ai didi

java - 如何按日期对查询结果进行排序(Jpa、Java 集合)

转载 作者:行者123 更新时间:2023-11-30 06:36:07 25 4
gpt4 key购买 nike

public List<Movie> findRange(int[] range) {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Movie.class));
Query q = em.createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
List<Movie> list1 = q.getResultList();
Collections.sort(list1, new Comparator(){
public int compare (Object o1, Object o2){
Movie p1 = (Movie)o1;
Movie p2 = (Movie)o2;
return p2.getDate().compareTo(p1.getDate());
}
});
return list1;
}

因为它现在可以排序,但只能在批处理中使用,
(批处理 = 4 部电影)第一个 = 最后输入;最后一个 = 第一个进入。
但只是与批处理中的比较,并非全部按需。

非常感谢您提供的任何帮助
最好的问候
伊格纳西奥

最佳答案

您可能应该在条件查询中定义顺序,而不是在查询已执行后对结果进行排序。否则,您最终只会对部分结果进行排序。

您可以使用 CriteriaQuery.orderBy(Order ...) 为查询分配排序顺序.可以使用 CriteriaBuilder 使用 asc(Expression) 创建按表达式排序对于升序或 desc(Expression)为降序。

以下可能有效也可能无效:

public List<Movie> findRange(int[] range) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Movie> cq = cb.createQuery(Movie.class);
Root<Movie> movie = cq.from(Movie.class);
cq.select(movie);
cq.order(cb.asc(movie.get(Movie_.getDate()));


...

}

关于java - 如何按日期对查询结果进行排序(Jpa、Java 集合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5207544/

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