2017-09-05 2 views
-1

Springデータを通じてCouchbaseに値を追加してサブドキュメントを変更しようとしています。しかし、それは失敗します。Springデータを使用してCouchbase Subドキュメントを変更します。

//サンプル文書

{ "type": "account", "events": [ { "transactionReference": "", "value": 100 } ] }

目的は、イベント、アレイ内の1つの以上のエントリを追加することです。以下は、操作を実行しているスニペットです。

Event eventObj = new Event(...); repository.getCouchbaseOperations().getCouchbaseBucket() .mutateIn("doc_id") .arrayPrepend("events", eventObj,false).execute();

更新 execute()メソッドは、以前に欠けていました。 以下は例外

com.couchbase.client.core.CouchbaseException: FAILURE at com.couchbase.client.java.subdoc.SubdocHelper.commonSubdocErrors(SubdocHelper.java:95) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$12.call(AsyncMutateInBuilder.java:923) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$12.call(AsyncMutateInBuilder.java:917) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$17.call(AsyncMutateInBuilder.java:1010) at com.couchbase.client.java.subdoc.AsyncMutateInBuilder$17.call(AsyncMutateInBuilder.java:1000) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69) at rx.observers.Subscribers$5.onNext(Subscribers.java:235) at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101) at rx.internal.producers.SingleProducer.request(SingleProducer.java:65) at rx.Subscriber.setProducer(Subscriber.java:209) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.subjects.AsyncSubject.onCompleted(AsyncSubject.java:106) at com.couchbase.client.core.endpoint.AbstractGenericHandler.completeResponse(AbstractGenericHandler.java:375) at com.couchbase.client.core.endpoint.AbstractGenericHandler.access$000(AbstractGenericHandler.java:69) at com.couchbase.client.core.endpoint.AbstractGenericHandler$1.call(AbstractGenericHandler.java:393) 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:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: com.couchbase.client.core.message.kv.subdoc.simple.SimpleSubdocResponse.class

+0

どのCouchbaseクライアントとサーバーのバージョンを使用していますか? FAILUREステータスは、JAVA SDKで予期しないエラーのためのものです。 –

答えて

0

Couchbase Sub-Document APIチェーン一緒に複数のmutateのコマンド(または複数の検索コマンド)にあなたを可能にするビルダーAPIがあるのスタックトレースです。 Java SDKの場合は、​​に電話してこれらの突然変異を実行する必要があります。

Event eventObj = new Event(...); 
repository.getCouchbaseOperations().getCouchbaseBucket() 
     .mutateIn("doc_id") 
     .arrayPrepend("events", eventObj,false) 
     .execute(); 
+0

誤った@Jeffの誤字、mutateメソッドが存在しません。私はスニペットを修正しました。 –

関連する問題