【问题标题】:Spring Pageable Sort works incorrect with mongoOperations. Sort order isn't correctSpring Pageable Sort 与 mongoOperations 一起工作不正确。排序顺序不正确
【发布时间】:2021-09-08 11:17:51
【问题描述】:

我使用org.springframework.data.domain.Pageable 从前端获取分页和排序规则。我需要按名称对条目进行排序,乍一看现在一切正常。但是,系统在字符f 之前给出字符I。看起来好像按照表格 ASCII 排序很顺利。

011
Alpha
Itext
front
man

请求看起来像...&sort=title,desc。我得到一个分页对象并将其放入数据库中的查询中。

return mongoOperations.find(Query.query(criteria).with(pageable), Book.class);

【问题讨论】:

    标签: java spring-boot sorting mongodb-query


    【解决方案1】:

    代码按预期工作,它按名称排序,区分大小写。 例如,您可以使用以下代码更改排序算法:

    Sort.Order order = new Sort.Order(Direction.ASC, "title").ignoreCase();
    Pageable paging = PageRequest.of(page, pageSize, Sort.by(order));
    Page<Video> findAll = videoRepo.findAll(paging);
    

    您可以使用类似的方法来更改从请求中获得的分页并使其不区分大小写:

    Pageable paging = ... // from your request
    
    List<Order> caseInsensitiveOrders = paging.getSort().get().map(Order::ignoreCase).collect(Collectors.toList());
    Pageable newPaging = PageRequest.of(page, pageSize, Sort.by(caseInsensitiveOrders));
    Page<Video> findAll = videoRepo.findAll(newPaging);
    

    关键是使用order.ignoreCase();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-08
      • 2019-09-16
      • 2017-03-03
      • 2021-09-01
      • 2021-10-09
      • 2012-02-24
      • 1970-01-01
      • 2020-08-21
      相关资源
      最近更新 更多