IT

Spring CrudRepository를 공장 대소 문자 구분없는 쿼리

lottoking 2020. 9. 9. 08:12
반응형

Spring CrudRepository를 공장 대소 문자 구분없는 쿼리


Spring CrudRepository 쿼리로; "이름"속성이있는 "DeviceType"엔터티를 선택하고 싶습니다. 그러나 다음 쿼리는 대소 문자를 구분하는 방식으로 자격을 선택합니다. 대소 문자를 구분하지 않는 방법. 감사합니다.

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

    public Iterable<DeviceType> findByNameContaining(String name);

}  

@Peter가 주석에서 언급했듯이 정확히 다음을 추가하십시오 IgnoreCase.

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

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

메소드 이름 내에서 지원되는 모든 키워드 목록은 설명서참조하십시오 .


다음 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 쿼리 상위 키워드 및 toUpperCase 를 사용하는 사람들을 위해 도움이됩니다. 다음 코드는 나를 위해 작동합니다.

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

참고 URL : https://stackoverflow.com/questions/22573428/case-insensitive-query-with-spring-crudrepository

반응형