gpt4 book ai didi

spring-data-jpa - 使用 Spring 数据进行不区分大小写的排序

转载 作者:行者123 更新时间:2023-12-04 04:31:37 24 4
gpt4 key购买 nike

如何使用 Spring-data Pageable 进行不区分大小写的排序?

我的存储库中有这个方法

public interface ItemRepository extends QueryDslPredicateExecutor<Item>{
@Query("SELECT o FROM Item o WHERE o.status = ?1")
Page<Item> findByStatus(Item.Status status, Pageable pageable);
}

我希望能够通过以下方式调用它:
itemRepository.findByStatus(Status.completed, new PageRequest(0, 10, Direction.ASC, "lower(name)")

注意 lower属性字符串中的函数。这不起作用,因为 Spring-data 期望那里有一个属性。这将被翻译成如下内容:
SELECT o FROM Item o WHERE o.status = ?1 ORDER BY o.lower(name)

这当然不起作用,因为对象上没有“较低”属性。

有没有办法使这项工作?

最佳答案

Sort.Order.ignoreCase()大约 8 个月前被引入 spring-data-jpa,看这里:

https://jira.springsource.org/browse/DATAJPA-296

https://github.com/kraymondksc/spring-data-jpa/commit/c3adce0bd36799d3754a5f4c61aee64982abd7e0

一旦你有一个合适的 spring-data-jpa 版本(我想从 1.4 M1 开始,我有 1.4.1)你可以写这样的东西:

Sort.Order order = new Sort.Order(Sort.Direction.ASC, "name").ignoreCase();
itemRepository.findByStatus(Status.completed, new PageRequest(0, 10, new Sort(order));

关于spring-data-jpa - 使用 Spring 数据进行不区分大小写的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777638/

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