Возникли проблемы с фильтрацией представлений Couchbase - PullRequest
0 голосов
/ 25 апреля 2018

Я использую 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 голосов
/ 30 апреля 2018

Вы можете указать с помощью аннотаций, чтобы автоматически генерировать представление и первичный индекс для этого документа, следующим образом:

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

public interface ClusterCodeXrefRepository extends CrudRepository<ClusterCodeXref, String> {

    @View
    List<ClusterCodeXref> findAllClusterCodeXrefs();
}

Я ответил на очень похожий вопрос здесь Запрос Spring CrudRepository с дочерним элементом?

0 голосов
/ 27 апреля 2018

Очевидно, поле _class не добавляется автоматически в импортируемые данные.Мне нужно добавить _class к моему набору данных (который я импортировал из файла CSV) вручную.

...