如何使用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);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够通过以下方式调用:
itemRepository.findByStatus(Status.completed, new PageRequest(0, 10, Direction.ASC, "lower(name)")
Run Code Online (Sandbox Code Playgroud)
请注意lower属性字符串中的函数.这不起作用,因为Spring-data期望那里有一个属性.这将被翻译成如下:
SELECT o FROM Item o WHERE o.status = ?1 ORDER BY o.lower(name)
Run Code Online (Sandbox Code Playgroud)
这当然不会起作用,因为对象上没有"低级"属性.
有没有办法让这项工作?
Grz*_*lak 17
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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9739 次 |
| 最近记录: |