요구 사항 : 한 문자열의 내용이 다른 문자열의 내용에 있습니다. 이 테스트는 전체 단어에만 적용되지만 여러 단어로 구성된 쿼리가 허용됩니다. 예를 들어 givenName:Jane
의 검색어는 givenName
값이 'Jane'및 'Jane Ann'이지만 사용자는 'Janet'이 아닌 사용자와 일치합니다. givenName:Mary Ann
에 대한 복수 단어 쿼리는 "Mary Ann Evans"및 "Sarah Mary Ann"의 값과 일치하지만 "Ann Mary"는 일치하지 않습니다.이 JPQL 요구 사항을 충족하십시오.
이것은 내가 지금까지 가지고있는 것입니다. JpaRepository
인터페이스를 확장하는 SiteRepository
이 있으며 다음과 같은 방법으로 구성됩니다.
@Query("SELECT s from Site s WHERE s.name LIKE :givenName")
public List<Site> findByName(@Param("givenName") String givenName);
이제 사용자는 아래의 방법에 문자열 값을 전달하는 가정 (예를 들어 "제인"또는 "메리 앤"). ":"하고 있는지, 내가 결장을 잘라 다음과 같은 문자를 연결하는 givenName
하위 문자열 위의 방법에서
public List<Site> findByName(String givenName) //Where Site is an entity with a name field.
, 나는 기본적으로이 있는지 확인하기 위해 매개 변수
giveName
의 첫 번째 문자를 확인합니다. 나는라고 그렇다면
return siteRepository.findByName("%" + givenName.substring(1, givenName.length()) + "%"
+ " AND NOT LIKE _" + givenName.substring(1, givenName.length()) + "_");
, findByName(":Jane")
내가 다음 JPQL 쿼리를 얻어야한다 : 이것은 그러나 작동하지 않습니다 SELECT s from Site s WHERE s.name LIKE %Jane% AND NOT LIKE _Jane_
합니다. 어떤 도움을 주셔서 감사 드리며 미리 감사드립니다.
모든 단어가 존재하고 단어의 첫 번째 색인이 다음 단어의 마지막 색인 앞에 있는지 확인하는 쿼리를 작성해야합니다. –
알겠습니다. 저에게 jpql 쿼리를 작성하는 방법을 보여 주시겠습니까? – chinesewhiteboi