Spring Data Couchbase проблемы с индексами - PullRequest
0 голосов
/ 26 августа 2018

Я играю с couchbase и весенним data couchbase.Для этого я установил couchbase с версией 5.5.1 build 3511 и включил тестовые корзины.Я создал пользователя beer-sample с паролем beer-sample и добавил ему все привилегии в корзину beer-sample.

Затем я создал этот пример приложения с конфигурацией для couchbase.Когда я запускаю приложение и запрашиваю для существующего пива в корзине, я получаю исключение:

com.couchbase.client.java.error.ViewDoesNotExistException: View beer/all does not exist.
    at com.couchbase.client.java.view.ViewQueryResponseMapper$BuildViewResult.call(ViewQueryResponseMapper.java:211)
    at com.couchbase.client.java.view.ViewQueryResponseMapper$BuildViewResult.call(ViewQueryResponseMapper.java:185)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
    at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)
    at rx.Subscriber.setProducer(Subscriber.java:211)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:113)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:281)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:216)
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: com.couchbase.client.java.document.json.JsonObject.class
    at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:118)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:73)
    ... 16 more

Я предполагаю, что индексы должны автоматически создаваться с моей конфигурацией, но, возможно, янеправильно.

1 Ответ

0 голосов
/ 26 августа 2018

В вашем BeerRepository используется интерфейс репозитория Spring в couchbase. Метод findAll() интерфейса предполагает наличие Couchbase View для получения данных. Поэтому вам нужно либо создать представление вручную в couchbase, либо добавить аннотацию к вашему BeerRepository интерфейсу с помощью @ViewIndexed(designDoc = "beer", viewName = "all"), что автоматически создаст представление, если его нет.

Ошибка, которую вы сделали, заключалась в том, чтобы аннотировать ваш класс Beer с помощью @ViewIndexed, так как аннотация должна использоваться для ваших интерфейсов репозитория. Подробнее об аннотации здесь .

Все это говорит о том, что вы также должны проверить использование 1014 * запросов Couchbase для доступа к данным из Couchbase. Вы можете использовать аннотацию @Query в своих методах хранилища для того же самого. Подробнее об аннотации @Query здесь .

...