这就是我所在的地方。我有一个接受 JSON 内容的 MVC 控制器方法。因为我需要使用 JSON Schema 对其进行验证,所以我的控制器将请求正文映射为 Jackson JsonNode。
验证成功后,我需要将数据保存在 Spring Couchbase 存储库中。考虑以下代码段:
public class Foo
{
@Id
private String _id;
@Version
private Long _rev;
@Field
private JsonNode nodeData;
// .. Other data and members.
}
//
// Repository
//
@Repository
public interface FooRepository extends CrudRepository<Foo, String> {
}
当我将这些元素存储到 Couch 存储库中时,我希望看到的是这样的:
{
"_class": "Foo",
"field1": "field 1 data",
"nodeData" : {
"Some" : "additional data",
"from" : "JsonNode"
}
}
相反,我在存储库中看到的是这样的:
{
"_class": "Foo",
"field1": "field 1 data",
"nodeData" : {
"_children": {
"Some": {
"_value": "additional data",
"_class": "com.fasterxml.jackson.databind.node.TextNode"
},
"From": {
"_value": "jsonNode",
"_class": "com.fasterxml.jackson.databind.node.TextNode"
},
"_nodeFactory": {
"_cfgBigDecimalExact": false
}
}
}
JsonNode 的每个存储属性都装饰有类信息和其他元数据,这是不可取的。
我的问题 - 有没有一种首选方法可以让 CrudRepository 以我希望的方式运行?