当前位置: 首页 > 知识库问答 >
问题:

带索引的Spring数据库问题

韦欣德
2023-03-14

我在玩couchbase和spring data couchbase。为此,我安装了版本为5.5.1 build 3511的couchbase,并启用了测试桶。我已经用密码创建了用户啤酒样本,并将其所有权限添加到bucket啤酒样本中。

然后,我创建了这个带有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个答案

马嘉勋
2023-03-14

您正在您的BeerRepository中使用Spring的Couchbase存储库接口。该接口的findAll()方法期望存在CouchbaseView以获取数据。因此,您需要在Couchbase中手动创建View,或者可以使用@ViewIndux注释您的BeerRepository接口(设计Doc="啤酒",viewName="all"),如果视图不存在,它将自动创建视图。

您所犯的错误是用ViewIndexed注释了您的Beer类,因为注释应该用于存储库接口。有关注释的详细信息,请参见此处。

尽管如此,您还应该查看利用Couchbase的N1QL查询从Couchbase访问数据。您可以在存储库方法上使用@Query注释。有关使用@Query注释的更多信息,请访问此处。

 类似资料:
  • 如果不需要打开shell执行create index,直接在程序源代码里就能指定数据库索引,是不是很酷? 是的,利用bugu-mongo,你只需在程序里加上个@EnsureIndex注解,即可实现该功能。 以一个简单的新闻系统为例: @Entity @EnsureIndex("{type:1}") public class News implements BuguEntity{ @Id

  • 推荐: http://tech.meituan.com/mysql-index.html MySQL索引背后的数据结构及算法原理 聚集索引,非聚集索引,B-Tree,B+Tree,最左前缀原理

  • 数据库创建索引能够大大提高系统的性能。 第一,通过创建唯一性的索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也使创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著的减少查询中查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,

  • 基本概念 在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。 索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。 对于非聚集索引,有些查询甚至可以不访问数据页。 聚集索引可以避免数据插入操作集中于表的最后一个数据页。 一些情况下,索引还可用于避免排序操作。 索引的存储 一条索引记录中包含的

  • 我正在使用: neo4j 2.0。1 我有一个具有属性名称的节点人员,我想用Lucene语法搜索该属性。我在我的存储库中使用findByNamelike方法,它非常适合像value*或*value或*etc这样的查询。 但是我需要这样的查询{A*TO D*}。我发现了一个弃用的方法findAllByQuery(名称,查询),用这个方法我可以实现我的需求。 > 我还注意到,如果我从cypher创建节

  • 本文向大家介绍oracle数据库索引失效,包括了oracle数据库索引失效的使用技巧和注意事项,需要的朋友参考一下 今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种: 但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况: 1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表) 2. 统计信