카테고리 없음

postgres jsonb 연산자를 사용할 수 없습니까? | 봄 JPA 사용

기록만이살길 2021. 2. 21. 09:59
반응형

postgres jsonb 연산자를 사용할 수 없습니까? | 봄 JPA 사용

1. 질문(문제점):

jsonb 배열에 배열의 요소가 하나 이상있는 엔티티를 검색해야합니다. 이를 위해 SQL 쿼리를 사용할 수 있습니다.

select * from person where roles ?| array['ROLE_1','ROLE_2'];

그러나 봄 jpa의 경우 이것은 유효하지 않습니다.

@Query(value = "select * from person where roles ?| array['ROLE_1','ROLE_2']", nativeQuery = true)

오류는 다음과 같습니다.

At least 1 parameter(s) provided but only 0 parameter(s) present in query.

문제가 특수 문자에 있음을 이해합니다 . 어떤 스프링이 저장소 메소드의 필수 매개 변수로 해석되는지 (예 : findRole1OrRole2 () 메소드가 있음 ),하지만 어떻게 처리 할 수 ​​있습니까?

2. 해결방안:

내부 작업 구현을 발견하고 내부 ?|에서 프로 시저를 호출 jsonb_exists_any(jsonb , text[])하므로 가능한 해결책은 다음과 같습니다.

@Query(value = "select * from person where jsonb_exists_any(roles, array['ROLE_1','ROLE_2'])", nativeQuery = true)
65925288
반응형