ここが私の居場所です。JSON コンテンツを受け入れる MVC コントローラー メソッドがあります。JSON スキーマを使用して検証する必要があるため、コントローラーは要求本文を 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 を希望どおりに動作させるための好ましい方法はありますか?