使用Spring CrudRepository进行不区分大小写的查询

时间:2014-03-22 04:21:19

标签: spring spring-data-jpa

使用Spring CrudRepository Query;我想用“name”属性选择“DeviceType”实体。但是以下查询以区分大小写的方式选择权限。我如何使它不区分大小写。感谢。

public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {

    public Iterable<DeviceType> findByNameContaining(String name);

}  

4 个答案:

答案 0 :(得分:163)

正如评论中提到的@Peter一样,只需添加IgnoreCase

public interface DeviceTypeRepository 
    extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {

    public Iterable<DeviceType> findByNameContainingIgnoreCase(String name);
}  

请参阅documentation以获取方法名称中所有受支持关键字的列表。

答案 1 :(得分:8)

以下Spring数据mongo查询适用于我。我更愿意使用List代替Iterator

public interface DeviceTypeRepository extends CrudRepository<DeviceType,Integer>, JpaSpecificationExecutor<DeviceType> {
    List<DeviceType> findByNameIgnoreCase(String name);
} 

答案 2 :(得分:1)

在我的情况下,添加IgnoreCase根本不起作用。

我发现也可以为正则表达式提供选项:

@Query(value = "{'title': {$regex : ?0, $options: 'i'}}")
Foo findByTitleRegex(String regexString);

i选项使查询不区分大小写。

答案 3 :(得分:1)

对于那些使用自定义JPA查询 Upper 关键字和 toUpperCase 的用户有帮助。以下代码对我有用

 return  entityManager.createQuery("select q from "table " q  where upper(q.applicant)=:applicant")
    .setParameter("applicant",applicant.toUpperCase().trim()).getSingleResult();