Я пытаюсь внедрить что-либо другое, кроме значений, используя синтаксис запроса N1QL @Query
, но не могу заставить его работать.Ввести ничего, кроме значения параметра
Вот чистый N1QL запрос:
SELECT * from `my-bucket` WHERE _class = 'my.package.MyModel' AND myParam = 'myValue'
Я успешно удалось внедрить значение в Java и получить правильные результаты:
// In my repository
@Query("#{#n1ql.selectEntity} WHERE myParam = $1 AND #{#n1ql.filter}")
Collection<MyModel> myCustomSearch(String value);
// In my business code
myRepository.myCustomSearch("myValue");
Однако я не могу управлять, чтобы ввести что-нибудь еще (как параметр). Это не работает:
// 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 запросе значение обычно заворачивают в одинарные кавычки («»), и это не нужно при закачке, я боюсь пружинными данных couchbase всегда оборачивает вводят элементы с одинарными или двойными кавычками (таким образом мой запрос преобразуется в
SELECT * from `my-bucket` WHERE _class = 'my.package.MyModel' AND 'myParam' = 'myValue'
, который объясняет, почему Couchbase не возвращает никакого результата).
Я что-то пропустил? В противном случае, есть ли способ обойти цитату инъекции из spring-data-couchbase?
Я знаю, я мог бы просто использовать com.couchbase.client.java.Bucket
и вызвать query
на него, но это теряет весь смысл весенне-данных-couchbase для меня, который всегда манипулировать POJO, и скрыть манипуляции JSON.
Я ценю любую помощь!
Мне любопытно, где вы нашли этот синтаксис '# {[}}'? Я не видел его нигде в документах типа Spring-data-couchbase или SpEL, таких как функция/синтаксис. – jdebon
нашел это в документе Spring Data JPA документации IIRC, в то время как поисковая система для поддержки параметров метода SpEL. Я просто добавил синтаксис и пример к документации Spring Data Couchbase в [this commit] (https://github.com/spring-projects/spring-data-couchbase/commit/415d8a2d2386f4387df95f54ff4a92467d57f7db) –
Спасибо за обновление документации, высоко оценили :) – jdebon