Case insensitive Query with Spring CrudRepository

With Spring CrudRepository Query; I want to select "DeviceType" entities with it's "name" property. But following query select the entitles on case sensitive manner. How I make it case insensitive way. Thanks.

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


public Iterable<DeviceType> findByNameContaining(String name);


}
124289 次浏览

就像@Peter 在评论中提到的那样,只要加上 IgnoreCase:

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


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

有关方法名称中支持的所有关键字的列表,请参见 documentation

下面的 Spring 数据 mongo 查询对我很有用。我更喜欢使用 List而不是 Iterator

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

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

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

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

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

对于那些使用自定义 JPA 查询 Upper关键字和 ToUpperCase帮助

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