如何使用 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://jira.springsource.org/browse/DATAJPA-296
https://github.com/kraymondksc/spring-data-jpa/commit/c3adce0bd36799d3754a5f4c61aee64982abd7e0 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));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)