스프링 Jpa Repository의 %Like% 쿼리
에 비슷한 질문을 쓰고 싶습니다.JpaRepository
그러나 아무것도 반환되지 않습니다.
LIKE '%place%'
- 작동하지 않습니다.
LIKE 'place'
완벽하게 동작합니다.
제 코드는 다음과 같습니다.
@Repository("registerUserRepository")
public interface RegisterUserRepository extendsJpaRepository<Registration,Long> {
@Query("Select c from Registration c where c.place like :place")
List<Registration> findByPlaceContaining(@Param("place")String place);
}
스프링 데이터 JPA 쿼리에는 "%" 문자와 다음 공백 문자가 필요합니다.like
질문에서와 같이
@Query("Select c from Registration c where c.place like %:place%")
.
참조: http://docs.spring.io/spring-data/jpa/docs/current/reference/html
이 기능을 해제하는 것이 좋을 수도 있습니다.@Query
표준 쿼리(스프링 데이터 프록시에 의해 자동으로 구현됨)와 유사한 것처럼 보이는 주석, 즉 단일 라인 사용
List<Registration> findByPlaceContaining(String place);
충분합니다.
실제로 필요한 것은 아닙니다.@Query
주석을 달아야 합니다.
다음 것만 사용하시면 됩니다.
@Repository("registerUserRepository")
public interface RegisterUserRepository extends JpaRepository<Registration,Long>{
List<Registration> findByPlaceIgnoreCaseContaining(String place);
}
이 경우 JPA 메서드를 직접 사용할 수 있습니다.이 코드는 다음과 같습니다.
내용: 선택...예를 들어 %: 플레이스 %
List<Registration> findByPlaceContainingIgnoreCase(String place);
여기서 Ignore Case를 사용하면 대소문자를 무시한 채 항목을 검색할 수 있습니다.
JPQL에서의 @Query 사용:
@Query("Select registration from Registration registration where
registration.place LIKE %?1%")
List<Registration> findByPlaceContainingIgnoreCase(String place);
다음은 관련된 몇 가지 방법입니다.
맘에 들다
findByPlaceLike
…여기서 x.place는 ?1과 같습니다.
처음에
findByPlaceStartingWith
…여기서 x.place는 ?1과 같습니다(%가 추가된 파라미터 바인딩).
엔딩
findByPlaceEndingWith
…여기서 x.place는 ?1과 같습니다(파라미터의 선두에 %가 부가됩니다).
재중
findByPlaceContaining
…여기서 x.place는 ?1(%로 둘러싸인 파라미터)과 같습니다.
자세한 내용은 이 링크, 이 링크 및 이 링크를 참조하십시오.
이것이 도움이 되기를 바랍니다:)
Spring Data JPA가 지원하는 키워드 "Containing"을 사용하여 유사한 쿼리를 구현할 수도 있습니다.
List<Registration> findByPlaceContaining(String place);
이거 먹어봐.
@Query("Select c from Registration c where c.place like '%'||:place||'%'")
플레이스 홀더를 다음과 같이 사용할 수 있습니다.
@Query("Select c from Registration c where c.place LIKE %?1%")
List<Registration> findPlaceContainingKeywordAnywhere(String place);
펑션을 호출할 때 다음을 사용합니다.findByPlaceContaining("%" + place);
또는 다음과 같이 입력합니다.findByPlaceContaining(place + "%");
또는 다음과 같이 입력합니다.findByPlaceContaining("%" + place + "%");
나는 이것을 사용한다.
@Query("Select c from Registration c where lower(c.place) like lower(concat('%', concat(:place, '%')))")
lower()는 String의 To Lower Case와 같기 때문에 결과는 대소문자를 구분하지 않습니다.
정확하게 대답하다
-->' @Query("u.categoryName이 %:input%와 같은 카테고리 u에서 u를 선택합니다")find All By 목록입력(@Param("input") 문자열 입력);
네이티브 쿼리를 사용할 수 있습니다.
@Query(nativeQuery = true, value ="Select * from Registration as c where c.place like %:place%")
List<Registration> findByPlaceContaining(@Param("place")String place);
없는 솔루션 발견@Query
(실제로 어느 쪽이 '합격'인지 시험해 보았습니다.하지만 효과가 없었습니다).
돌아와야 한다Page<Entity>
대신List<Entity>
:
public interface EmployeeRepository
extends PagingAndSortingRepository<Employee, Integer> {
Page<Employee> findAllByNameIgnoreCaseStartsWith(String name, Pageable pageable);
}
IgnoreCase
이 목표를 달성하기 위해 부품이 중요했습니다!
파라미터 뒤에 '좋아요'라는 키워드를 말하면 됩니다.
List<Employee> findAllByNameLike(String name);
우리 이렇게
@Query("CasFhgDeviceView에서"deviceGroupName이 concat('%CSGW%', :usid), '%'와 같은 경우")
다양한 접근법이 있을 수 있습니다.많은 답변에서 언급했듯이 가능하면 JPA 사전 정의된 템플릿 쿼리를 사용할 수 있습니다.
List<Registration> findByPlaceContainingIgnoreCase(String place);
또한 위의 메서드를 호출하기 전에 Java 계층에 '%'를 추가할 수 있습니다.
복잡한 쿼리의 경우 일반적으로 @Query one을 사용할 수 있습니다.
@Query("Select r from Registration r where r.place like '%' || :place || '%'")
가독성을 위해 아래를 사용할 수 있습니다.
@Query("Select r from Registration r where r.place like CONCAT('%', :place, '%'")
는 이런 하지 않을 수 .CONCAT('%',:setName,'%')
이것은 이제 스프링 데이터 JPA를 통해 가능합니다.http://docs.spring.io/spring-data/jpa/docs/current/reference/html/ #syslogs-by-syslogs를 참조하십시오.
Registration registration = new Registration();
registration.setPlace("UK");
ExampleMatcher matcher = ExampleMatcher.matchingAll()
.withIgnoreCase()
.withStringMatcher(StringMatcher.CONTAINING);
Example<Registration> example = Example.of(registration, matcher);
List<Registration> registrationList = registerUserRepository.findAll(example);
언급URL : https://stackoverflow.com/questions/25362540/like-query-in-spring-jparepository
'programing' 카테고리의 다른 글
#1030 - 스토리지 엔진 Aria에서 오류 176 "잘못된 체크섬으로 페이지 읽기"가 표시됨 (0) | 2022.11.06 |
---|---|
C에서 uint32_t를 바이너리로 변환하는 중 (0) | 2022.11.06 |
mysql.proc에서 로드할 수 없습니다.테이블이 파손되었을 가능성이 있습니다. (0) | 2022.11.06 |
JS 문자열 "+" 대 concat 메서드 (0) | 2022.11.06 |
1일마다 스케줄이 설정되어 있는 경우 mariadb/mysql 이벤트가 실제로 어떻게 동작하는지 및 ENS의 용도는 무엇입니까?이벤트가 완전히 비활성화됩니까? (0) | 2022.11.06 |