N1QL 쿼리 구문을 사용하여 값 이외의 값을 주입하려고하지만 작동하지 않습니다.매개 변수 이외의 값을 입력하십시오.
SELECT * from `my-bucket` WHERE _class = 'my.package.MyModel' AND myParam = 'myValue'
내가 성공적으로 관리하는 자바에 값을 을 주입하고 올바른 결과를 얻을 :
// In my repository
@Query("#{#n1ql.selectEntity} WHERE myParam = $1 AND #{#n1ql.filter}")
Collection<MyModel> myCustomSearch(String value);
// In my business code
myRepository.myCustomSearch("myValue");
그러나 내가 주입 관리 할 수 없습니다 여기
순수 N1QL 쿼리입니다 다른 항목 (예 : 매개 변수). 이 작동하지 않습니다// In my repository
@Query("#{#n1ql.selectEntity} WHERE $1 = 'myValue' AND #{#n1ql.filter}")
Collection<MyModel> myCustomSearch(String param);
// In my business code
myRepository.myCustomSearch("myParam");
가 주입하면 순수 N1QL 쿼리에 값은 보통 ('') 따옴표로 포장하고 필요는 없습니다 것을 고려하면, 내가 두려워 스프링 데이터 카우치베이스 주식회사 해요 항상 작은 따옴표 나 큰 따옴표를 가진 요소를 주입 랩핑 (따라서 내 쿼리는 카우치베이스 주식회사가 어떤 결과를 반환하지 않는 이유를 설명 SELECT * from `my-bucket` WHERE _class = 'my.package.MyModel' AND 'myParam' = 'myValue'
로 변환된다).
내가 뭔가를 놓쳤습니까? 그렇지 않으면 spring-data-couchbase에서 quote injection을 우회 할 방법이 있습니까?
은 내가 단순히 com.couchbase.client.java.Bucket
를 사용하고에 query
를 호출 할 수 있습니다 알고 있지만, 이것은 항상 POJO를 조작하고, JSON 조작을 숨길 수있는, 나를 위해 스프링 데이터 카우치베이스 주식회사의 요점을 잃는다.
감사합니다.
궁금 해서요,이'# {[]}'구문을 어디에서 찾았습니까? 스프링 데이터 - couchbase 나 SpEL 문서 등 어디에서나 볼 수있는 기능/구문은 어디에도 없습니다. – jdebon
은 스프링 데이터 JPA 문서 IIRC에서이를 발견했으며 SpEL 메서드 매개 변수 지원을 검색했습니다. 방금 Spring Data Couchbase 문서에 [이 커밋] (https://github.com/spring-projects/spring-data-couchbase/commit/415d8a2d2386f4387df95f54ff4a92467d57f7db)의 구문과 예제를 추가했습니다. –
문서 업데이트를 주셔서 감사합니다. :) – jdebon