봄 데이터 JPA의 항목 목록을 포함 쿼리를 사용하여 여러 열 검색
저는 도서관 API에 관련된 일을 하고 있으며, 책을 찾는 것이 목표입니다.지금 이 책은 제가 검색하고 싶은 두 가지 흥미로운 가치를 가지고 있습니다.제목 및 게시판(책 뒷면의 텍스트).
기본 데이터베이스는 MariaDB입니다.
JPA 쿼리를 작성했습니다.
Iterable<Book> findByTitleContainsOrBlurbContains(String query, String query2)
query와 query2의 내용이 동일합니다.한 번의 용어 검색으로 이 접근 방식은 잘 작동했지만, 두 개 이상의 단어가 burb와 title 사이에 섞여 있을 때 이 접근 방식이 작동하지 않게 되었습니다.이것은 이해할 수 있습니다.
저의 두 번째 시도는 모든 용어를 문자열 값 목록으로 나누는 것이었습니다.
Iterable<Book> findByTitleContainsIsInOrBlurbContainsIsIn(List<String> query, List<String> query2);
이것도 효과가 없었습니다.응용 프로그램이 컴파일되지 않습니다.
포함 컨텍스트의 항목 목록으로 두 열을 검색하는 방법이 있습니까?
여기에 설명된 것처럼 정규식 쿼리가 이를 달성하는 한 가지 방법이 될 수 있습니다. MySQL LIKE IN()?
하는 동안에REGEX
나열된 키워드 중 하나입니다. spring-data-jpa는 (아직) 지원하지 않는 것 같습니다(버전 2.5: regex-).type
존재하지만 평가되지 않기 때문에 다음과 같은 것.queryByAttributeRegex(String regex)
작동하지 않음).
대체 기본 쿼리:
@Query(nativeQuery = true, value = "SELECT * FROM my_entity WHERE "
+ "attribute1 REGEXP CONCAT_WS('|', :list1) " + "OR "
+ "attribute2 REGEXP CONCAT_WS('|', :list2) ")
List<MyEntity> findByAttributeList1Or2( // (method name does not matter)
@Param("list1") Collection<String> list1,
@Param("list2") Collection<String> list2);
CONCAT_WS
제공된 목록에 가입합니다(예:('val1', 'val2')
로.'val1|val2'
예를 들어 '완전'과 일치할 것입니다.val2
xxx'입니다.
몇 가지 테스트와 함께 전체 예를 보려면 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/69373878/searching-multiple-colums-with-a-contains-query-with-a-list-of-items-in-spring-d
'programing' 카테고리의 다른 글
큰 숫자와 함께 DEC2BIN() 사용 (0) | 2023.06.07 |
---|---|
Asp.net core 2.0에서 log4net을 사용하는 방법 (0) | 2023.06.07 |
ASP.NET에 호환되지 않는 두 개의 세션 상태 유형이 있는 이유는 무엇입니까? (0) | 2023.06.07 |
pl/sql 프로시저에서 변수를 선언할 때 구문 오류 발생 (0) | 2023.06.07 |
여러 매개 변수를 사용하여 Sub를 호출할 때 VBA에서 오류를 반환합니다. (0) | 2023.06.07 |