我试图创建一个Spring Data MongoDB仓库方法来执行对给定列表中字段的不区分大小写搜索,这是类似于SQL 'IN'运算符的功能。
在我的仓库中,我有以下方法:
User findByUsername(@Param("username") String username);
User findByUsernameIgnoreCase(@Param("username") String username);
Page<User> findByUsernameIn(@Param("username") List<String> username, Pageable pageable);
Page<User> findByUsernameIgnoreCaseIn(@Param("username") List<String> username, Pageable pageable);
Page<User> findByUsernameInIgnoreCase(@Param("username") List<String> username, Pageable pageable);
Page<User> findByUsernameInAllIgnoreCase(@Param("username") List<String> username, Pageable pageable);
我同样使用 @RepositoryRestResource
将仓库暴露为REST资源。
前三种方法都能按照我的期望很好地工作。使用 findByUsernameIgnoreCase
时,搜索会忽略大小写。在 findByUsernameIn
中使用给定的字符串列表可以正确地找到用户。
我的问题是,我无法同时使用 In
和 IgnoreCase
后缀。最后两个方法也能正常工作,但它们不会像我想要的那样忽略字符串的大小写。
有没有一种方法可以执行不区分大小写的 IN
搜索,而不必明确指定MongoDB的 @Query
?
(尝试过spring-data-mongodb:1.8.4、spring-data-rest-core:2.4.4)