Как правильно делать однополевые n1ql-проекции с spring-data-couchbase - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь спроецировать одно поле в документе. Я попробовал пару подходов - один из них упоминается здесь в этом Spring data Couchbase doc , а другой упоминается в этом вопросе

Все это возвращает одно и то же исключение

org.springframework.data.couchbase.core.CouchbaseQueryExecutionException:    
Unable to execute query due to the following n1ql errors: {"msg":"Ambiguous reference to field _class.","code":3000}
    at org.springframework.data.couchbase.core.CouchbaseTemplate.findByN1QL(CouchbaseTemplate.java:458) ~[spring-data-couchbase-3.0.6.RELEASE.jar:3.0.6.RELEASE]

Ниже приведен запрос, который я использую, и он работает, как и ожидалось, на Query workbench

public interface ProjectRespository extends CouchbasePagingAndSortingRepository<Project, String> {

     @Query("SELECT DISTINCT projectId where #{#n1ql.filter} AND serverTech = $1")   
      List<ProjectIdDTO> findByServerTech(@Param("serverTech") String serverTech);

ProjectIdDTO - это DTO, которое я специально определил, чтобы вернуть список ProjectId. Не уверен, что мне здесь не хватает.

1 Ответ

0 голосов
/ 29 июня 2018

Спасибо @vsr @subhashni за указание. Банальная ошибка Это действительно был отсутствующий # {n1ql.bucket}, который стал причиной ошибки.

Ambiguous reference to field _class должен был побудить меня перепроверить запрос.

...