CouchBase リポジトリにエンティティを保持し、クエリを実行しようとしています。エンティティは次のようになります。
@Document(expiry = 0)
public class GsJsonStore implements Serializable {
private static final long serialVersionUID = 7133072282172062535L;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Field
private Map<String,Object> _object;
@Field
private String _subject;
@Field
private String _predicate;
//Getters and Setters
}
次のように、CouchbaseOperations テンプレートで N1QL クエリを使用してエンティティをクエリしています。
String query1 = "SELECT META(default).id as _ID, META(default).cas as _CAS, default.* FROM default WHERE "+key+"="+"'"+value+"'";
List<GsJsonStore> list = operations.findByN1QL(N1qlQuery.simple(query1), GsJsonStore.class);
_object マップ内で KV ペアを照会しています。エラーが発生します:No mapping metadata found for java.lang.Object
なぜこうなった?Map<String,Object>
また、 Couchbase のようにjson オブジェクトを格納しています。jacksonJsonNode
型を使用してみましたが、オブジェクトにはクラス関連のメタデータも格納されていました。json 型を表すより良いデータ型はありますか?
編集
Couchbase に保存されたデータ:
{
"_object" : {
"Name" : "Kapil",
"Age" : {
"Nested" : 21
}
},
"_subject" : "Subject",
"_predicate" : "Predicate"
}
私が探しているキーは _object.Name で、値は「Kapil」です