我正在尝试编写样本以学习沙发基础.我正在尝试使用它与spring boot和它的crud存储库.
所以我已经下载了最新的docker镜像,但重点是:我找不到桶的密码.couchbase控制台只允许用户创建,但在春天,没有像用户名/密码那样的用法.它只允许使用与couchbase 5不兼容的bucketName和密码.
我在这里遗漏了什么,或者春天与couchbase 5不兼容?如果spring不兼容,哪个版本的couchbase可以吗?
谢谢
我正在玩Couchbase和Spring数据Couchbase。为此,我已经安装了带有版本号5.5.1 build 3511并启用了测试桶的ouchbase 。我已经beer-sample用密码创建了用户,beer-sample并向他添加了bucket的所有权限beer-sample。
然后,我创建了带有示例配置的示例应用程序。当我启动该应用程序并查询存储桶中的现有啤酒时,出现异常:
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
Run Code Online (Sandbox Code Playgroud)
我猜应该使用我的配置自动创建索引,但是也许我错了。
我有一个使用Spring Data for Couchbase的springBoot 2.1.9.RELEASE应用程序
我有这个对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Hostel<T> {
@NotNull
@JsonProperty("_location")
private T location;
}
Run Code Online (Sandbox Code Playgroud)
还有另外一个
@Document
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(of = { "id" })
@Builder
public class HTMDoc {
@Id
private String id;
@NotNull
@Field
private Hostel hostel;
}
Run Code Online (Sandbox Code Playgroud)
在服务上
public HTMDoc create(@Valid HTMDoc doc) {
return repository.save(doc);
}
Run Code Online (Sandbox Code Playgroud)
在测试中
service.create(new HTMDoc());
Run Code Online (Sandbox Code Playgroud)
但是当我保存时,出现此错误,而不是旅馆字段中的验证NotNull
org.springframework.data.mapping.MappingException: An ID property is needed, but not found/could not be generated on this entity.
Run Code Online (Sandbox Code Playgroud) 我在CouchBase存储库中持久化实体并尝试查询它.该实体看起来像这样:
@Document(expiry = 0)
public class GsJsonStore implements Serializable {
private static final long serialVersionUID = 7133072282172062535L;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Field
private Map<String,Object> _object;
@Field
private String _subject;
@Field
private String _predicate;
//Getters and Setters
}
Run Code Online (Sandbox Code Playgroud)
我在CouchbaseOperations模板上使用N1QL查询来查询实体,如下所示:
String query1 = "SELECT META(default).id as _ID, META(default).cas as _CAS, default.* FROM default WHERE "+key+"="+"'"+value+"'";
List<GsJsonStore> list = operations.findByN1QL(N1qlQuery.simple(query1), GsJsonStore.class);
Run Code Online (Sandbox Code Playgroud)
我在_object Map中查询KV对.我收到一个错误:No mapping metadata found for java.lang.Object
为什么会这样?另外,我Map<String,Object>在Couchbase中存储json对象,我尝试使用jackson JsonNode类型,但对象也存储了类相关的元数据.是否有更好的数据类型来表示json类型?
编辑
存储在Couchbase中的数据:
{
"_object" : {
"Name" : …Run Code Online (Sandbox Code Playgroud)