1

Java POJOをcouchbaseストアに挿入しようとしていますが、cas呼び出しのすぐ下のjsonは次のようになります-

{
"key": "sampleKey",
"myMap": {
    "Messages": [
        {
            "field": "f1",
            "label": "l1"
        },
        {
            "field": "f2",
            "label": "l2"
        },
        {
            "field": "f3",
            "label": "l3"
        },
        {
            "field": "f4",
            "label": "l4"
        }
    ],
    "Orders": [
        {
            "field": "f1",
            "label": "l1"
        },
        {
            "field": "f2",
            "label": "l2"
        },
        {
            "field": "f3",
            "label": "l3"
        },
        {
            "field": "f4",
            "label": "l4"
        },
        {
            "field": "f5",
            "label": "l5"
        }
        ]
    }
}

これが有効な JSON であることを確認しました。couchbase GUI を介してこのドキュメントを検索しようとすると、バイナリ オブジェクトとしてまだ挿入されています。base64 でエンコードされた文字列が表示されます。ただし、他のいくつかのドキュメントは問題ありません。casこれがメソッドでのみ発生しており、 では発生していないのではないかと思っていsetます。

関連する Java コードは次のとおりです。

String myJson = objectMapper.writeValueAsString(cacheObject);
CASResponse response = couchbaseClient.cas(cacheObject.getKey(), casValue.getCas(), myJson, PersistTo.MASTER);

// Java pojo
public class CacheObject
{
    private String key;
    private Map<String, List<FieldLabel>> myMap = new HashMap<String, List<FieldLabel>>();

    // setters and getters
}

なぜこれが起こっているのかについての指針をいただければ幸いです。

Update1: Couchbase Java クライアント バージョン 1.4.4、サーバー 2.5 を使用しています

Update2: これは自分のコードや json とは関係ないと思います。json を大きな json ドキュメント (有効なもの) に置き換えてみたところ、couchbase GUI で同じ結果が得られました。ドキュメントのサイズが 2.5KB を超える可能性があるため、これが発生していると思います。上に貼り付けた json には、実際のフィールドとラベルが削除されており、少し長い文字列になっています。奇妙なことに、ドキュメントを変更すると、通常、960 文字未満のドキュメントは Json として表示されますが、わずかに超えるドキュメントはバイナリとして保存されます。

4

1 に答える 1

0

ドキュメントのサイズが 2.5KB を超える場合、ドキュメントはコンソールで編集できません。この値は、documents.js というファイルで変更できます。

于 2015-09-16T09:50:08.020 に答える