Java Spring Mongo,在使用存储库、MongoRepository 和 QueryDslPredicateExecutor 获取数据时忽略排序中的大小写
Java Spring Mongo, ignore case in sorting while fetching data using repositories, MongoRepository and QueryDslPredicateExecutor
我正在使用以下代码使用存储库从 mongo 获取数据:
BooleanBuilder booleanBuilder = new BooleanBuilder();
booleanBuilder
.and(QMyClass.myClass.account.eq(987654321l));
Page<MyClass> myClassPage = myClassRepository
.findAll(booleanBuilder, new PageRequest(0, 20, Sort.Direction.DESC, "name"));
或
myClassRepository.findByAccount(987654321l, new PageRequest(0, 20, Sort.Direction.DESC, "name"))
使用这两种设置,我得到的结果按以下 "name" 排序顺序排列,首先排序小写字母,然后排序大写字母:
mary
john
andrew
Mary
Anil
1Sam
我要不区分大小写的结果
我已经知道我可以使用自定义查询并将排序规则与 mongo 模板一起使用。我想知道我是否可以将它与我现有设置的存储库一起使用?
我添加了 feature request 以添加对存储库的排序支持。当功能请求实现时,我会更新答案以包含示例。
存储库中似乎不支持排序规则。现在,为了解决这个问题,我又创建了一个仅存储小写字母的列,然后在这个新列上应用 sort/search。
我正在使用以下代码使用存储库从 mongo 获取数据:
BooleanBuilder booleanBuilder = new BooleanBuilder();
booleanBuilder
.and(QMyClass.myClass.account.eq(987654321l));
Page<MyClass> myClassPage = myClassRepository
.findAll(booleanBuilder, new PageRequest(0, 20, Sort.Direction.DESC, "name"));
或
myClassRepository.findByAccount(987654321l, new PageRequest(0, 20, Sort.Direction.DESC, "name"))
使用这两种设置,我得到的结果按以下 "name" 排序顺序排列,首先排序小写字母,然后排序大写字母:
mary
john
andrew
Mary
Anil
1Sam
我要不区分大小写的结果
我已经知道我可以使用自定义查询并将排序规则与 mongo 模板一起使用。我想知道我是否可以将它与我现有设置的存储库一起使用?
我添加了 feature request 以添加对存储库的排序支持。当功能请求实现时,我会更新答案以包含示例。
存储库中似乎不支持排序规则。现在,为了解决这个问题,我又创建了一个仅存储小写字母的列,然后在这个新列上应用 sort/search。