【问题标题】:How to correctly do single field n1ql projections with spring-data-couchbase如何使用 spring-data-couchbase 正确进行单场 n1ql 投影
【发布时间】: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


【解决方案1】:

感谢@vsr @subhashni 指出。微不足道的错误。确实是缺少的 #{n1ql.bucket} 导致了错误。

Ambiguous reference to field _class 应该提示我仔细检查查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多