我正在尝试将 java POJO 插入到 couchbase 存储中,调用下方的 jsoncas
看起来像这样 -
{
"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,而略高于 960 个字符的文档则存储为二进制。