JPQL 대소문자 구분 안 함
이름 대소문자를 구분하지 않고 사용자 테이블의 데이터를 검색합니다.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where lower(u.name) like %lower(?1)%")
public List<User> findByNameFree(String name);
}
오류가 발생했습니다. 예기치 않은 토큰: %.'%'를(를) 어디에 배치해야 합니까?
concat 연산자를 사용할 수 있습니다.
@Query("select u from User u where lower(u.name) like lower(concat('%', ?1,'%'))")
public List<User> findByNameFree(String name);
또는 명명된 매개 변수를 사용합니다.
@Query("select u from User u where lower(u.name) like lower(concat('%', :nameToFind,'%'))")
public List<User> findByNameFree(@Param("nameToFind") String name);
(Spring Boot 1.4.3과 함께 테스트)
Spring Data JPA를 사용하는 경우에만 조회를 작성할 필요가 없습니다.
List<User> findByNameContainingIgnoreCase(String name);
그렇지 않으면 포장이 필요합니다.name
로 귀속시키다.%
메소드에 전달하기 전에(쿼리에 직접 있는 것은 단순히 작동하지 않습니다).또는 쿼리를 사용하지 않고 사양 또는 Criteria API를 사용하여 쿼리를 생성합니다.
나는 Spring Boot 2.1.6을 사용하고 있습니다. 다음과 같이 Containing, Contains 및 IsContaining을 사용하여 쿼리 방법을 정의할 수 있습니다.
List<User> findByNameContaining(String name);
List<User> findByNameContains(String name);
List<User> findByNameIsContaining(String name);
대소문자 구분 안 함:
List<User> findByNameContainingIgnoreCase(String name);
또는 다음과 같이 정의할 수도 있습니다.
@Query("select u from User u where lower(u.name) like lower(concat('%', :name,'%'))")
public List<User> findByName(@Param("name") String name);
여기서 @Param 주석은 명명된 매개 변수를 사용하기 때문에 중요합니다.
concat 사용 및 TypedQuery 사용 안 함:
TypedQuery<Baptism> query = entityManager.createQuery("SELECT d FROM " + Baptism.class.getSimpleName()
+ " d JOIN d.person p WHERE UPPER(p.lastName) LIKE UPPER(:ln)", Baptism.class);
query.setParameter("ln", "%" + ln + "%");
스프링 부트 명명 규칙 전략을 사용하여 다음과 같은 명명 패턴을 달성할 수 있습니다.YourFieldCamelCase
무시하는 케이스처럼
example: findByUserNameLikeIgnoreCase(userName: String): List<UserEntity>
사용할 수 있습니다.wildcard matching
.
예를 들어, 나는 이름을 검색하고 싶습니다.haha
,
@Query("select u from User u where lower(u.name) like :u_name")
public List<User> findByNameFree(@Param("u_name") String name);
List<User> users = userDao.findByNameFree("%haha");
언급URL : https://stackoverflow.com/questions/37178520/jpql-like-case-insensitive
'programing' 카테고리의 다른 글
SQL에서 인용문 '을(를) 어떻게 처리합니까? (0) | 2023.07.30 |
---|---|
스프링 관련 문제:예기치 않은 오류가 발생했습니다(type=Not Found, status=404). (0) | 2023.07.30 |
fromPromPromise가 관찰 가능 유형에 없습니다. (0) | 2023.07.30 |
PowerShell에서 SQL Server 데이터베이스에 연결 (0) | 2023.07.30 |
SQL의 다대다 가입 (0) | 2023.07.30 |