首页 文章

Spring Data Couchbase索引问题

提问于
浏览
1

我正在玩沙发基地和 spring 数据沙发基地 . 为此,我安装了版本为 5.5.1 build 3511 的couchbase并启用了测试存储区 . 我创建了用户 beer-sample ,密码为 beer-sample ,并将所有权限添加到存储桶 beer-sample .

然后我用couchbase的配置创建了this sample application . 当我启动应用程序和query用于桶中的现有啤酒我得到例外:

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 回答

  • 4

    您正在 BeerRepository 中使用Spring的couchbase存储库接口 . 接口的 findAll() 方法需要Couchbase View 来获取数据 . 因此,您需要在couchbase中手动创建View,或者可以使用 @ViewIndexed(designDoc = "beer", viewName = "all") 注释 BeerRepository 接口,如果视图不存在,将自动创建视图 .

    您所做的错误是使用 @ViewIndexed 注释您的 Beer 类,因为注释应该用于您的Repository接口 . 有关注释here的更多信息 .

    总而言之,您还应该查看利用Couchbase的 N1QL 查询来访问Couchbase的数据 . 您可以在存储库方法上使用 @Query 注释 . 有关使用 @Query 注释here的更多信息 .

相关问题