我正在尝试创建一个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
前三种方法的效果非常好,正如我所料。使用findByUsernameIgnoreCase
时,搜索会忽略该案例。使用findByUsernameIn
中的给定字符串列表找到用户。
我的问题是我无法合并In
和IgnoreCase
后缀。
最后两种方法也有效,但它们不忽略字符串的大小写,正如我希望它们那样。
有没有办法执行不区分大小写的IN
搜索而不是回退到显式指定MongoDB @Query
?
(尝试使用spring-data-mongodb:1.8.4,spring-data-rest-core:2.4.4)