【发布时间】:2018-06-28 06:40:13
【问题描述】:
我正在尝试在文档中投影单个字段。我尝试了几种方法-Spring data Couchbase doc 中提到了一种方法,question 中提到了另一种方法
所有的都返回相同的异常
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 是我专门定义的用于返回 ProjectId 列表的 DTO。不知道我在这里缺少什么。
【问题讨论】:
-
查询中似乎缺少 FROM 子句
-
@vsr 提到,它还需要 FROM #{#n1ql.bucket}
-
当我尝试这个时,我得到了错误
Unable to retrieve enough metadata for N1QL to entity mapping, have you selected _ID and _CAS?...你是否需要在 DTO 类中做任何特别的事情? -
@snoopDoug 是的,除了要投影的内容之外,您还需要获取 ID 和 CAS。检查这个 - forums.couchbase.com/t/…
标签: n1ql spring-data-couchbase