Couchbase视图过滤遇到问题

时间:2018-04-25 12:40:04

标签: couchbase spring-data-couchbase

我使用的是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语句拿出来,我会得到我期望的一切。我做错了什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以通过注释指定自动生成此文档的视图和主索引,如下所示:

@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "clusterCodeXref")
@Repository

public interface ClusterCodeXrefRepository extends CrudRepository<ClusterCodeXref, String> {

    @View
    List<ClusterCodeXref> findAllClusterCodeXrefs();
}

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