Spring Data JPA:不区分大小写的orderBy

5
我希望按照名称属性升序排列实体,并忽略大小写。需要创建一个扩展Spring Data Repository接口的EntityRepository。然后声明以下查找方法:
List<Entity> findByNameOrderByNameIgnoreCaseAsc(String name);

但我收到了这个错误信息"找不到类型的ignoreCase属性"。
Spring Data JPA文档中,我没有找到任何相关的内容。
我正在使用spring-data-jpa版本1.11.0。

1
尝试使用 findByNameOrderByNameAscIgnoreCase(String name)参考文献)进行查询。 - Bond - Java Bond
不起作用:"未找到忽略大小写属性"。 - Fedy2
你使用的是哪个版本的spring-data-jpa?你的repository类继承了什么?你在问题中没有提供足够的信息。 - eis
当你按名称排序时忽略大小写,但是在过滤名称时不忽略大小写,这有什么意义呢? - Jens Schauder
4个回答

9
如果您只想按名称排序并忽略大小写返回所有实体,可以使用以下代码:
repository.findAll(Sort.by(Sort.Order.asc("name").ignoreCase()));

很好,因为你的存储库中的任何其他方法都可以接收一个 Sort sort 参数,并且你可以在其上使用完全相同的解决方案。谢谢! - gcpdev

1

0

尝试创建下面的存储库方法(注意添加了排序参数)

List<Entity> findByName(String name, Sort sort);

然后在这个仓库中扩展PagingAndSortingRepository(其中Long是您的实体ID类型):

extends PagingAndSortingRepository<Entity, Long>

然后这样调用方法:

repository.findByName("nameToFind", Sort.by(Sort.Order.asc("name").ignoreCase()));

-3

你的方法应该像这样。

List<Entity> findByNameIgnoreCaseOrderByNameAsc(String name);

请参考 {{link1}}

4
我希望您能按名称排序,而不区分名称的大小写。您的方法是使用名称匹配实体,并忽略大小写。 - Fedy2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接