【问题标题】:Having trouble with Couchbase view filteringCouchbase 视图过滤有问题
【发布时间】:2018-04-25 12:40:04
【问题描述】:

我正在使用 spring-data-couchbase,并且正在尝试为 findAll() 查询创建后备视图。我创建了一个名为ClusterCodeXref 的文档和一个名为allClusterCodeXrefs 的视图,与我的模型类匹配。我需要根据调用类过滤(我说对了吗?),因为这个桶也将用于其他应用程序。

我的模型如下所示:

package com.company.aad.xref.model;

@Document
public class ClusterCodeXref implements Serializable {

    private static final long serialVersionUID = 3072475211055736282L;

    @Id
    String id;

    @Field("SET_NUM")
    String setNum;

    ...
}

这是存储库类:

@Repository

public interface ClusterCodeXrefRepository
  extends CrudRepository<ClusterCodeXref, String> {

    @View
    List<ClusterCodeXref> findAllClusterCodeXrefs();
}

这是我的观点:

function (doc, meta) {  
  if (doc._class == "com.company.aad.xref.model.ClusterCodeXref") {
    emit(meta.id, null);
  }
}

但是当我运行findAllClusterCodeXrefs() 查询时,没有返回任何行。如果我去掉 if 语句,我会得到我所期望的一切。我做错了什么?

【问题讨论】:

    标签: couchbase spring-data-couchbase


    【解决方案1】:

    显然_class 字段不会自动添加到导入的数据中。我需要手动将_class 添加到我的数据集(我从 CSV 文件中导入)。

    【讨论】:

      【解决方案2】:

      您可以通过注解指定自动为该文档生成视图和主索引,如下:

      @N1qlPrimaryIndexed
      @ViewIndexed(designDoc = "clusterCodeXref")
      @Repository
      
      public interface ClusterCodeXrefRepository extends CrudRepository<ClusterCodeXref, String> {
      
          @View
          List<ClusterCodeXref> findAllClusterCodeXrefs();
      }
      

      我在这里回答了一个非常相似的问题Spring CrudRepository query with child element?

      【讨论】:

      • 谢谢!但是索引会是什么样子??
      • 我需要告诉另一个团队如何查找数据,我不知道他们会使用 Spring。
      • 您也可以使用@View(designDocument = "user", viewName = "byName") 指定视图名称查看projects.spring.io/spring-data-couchbase
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      相关资源
      最近更新 更多