使用Spring CrudRepository Query;我想用“name”属性选择“DeviceType”实体。但是以下查询以区分大小写的方式选择权限。我如何使它不区分大小写。感谢。
public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {
public Iterable<DeviceType> findByNameContaining(String name);
}
答案 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();