2016-04-04 12 views
0

私は、データベースとしてSpring & MongoDBを使ってデモアプリケーションを書いています。以下のよう部分的に定義されたスキーマを持つドキュメントのマッピング

私のメインのドメインクラスが見えます:

@Document 
public class Person { 

    @Id 
    private String id; 

    //Some other fields 
    private DBObject additionalData; 

} 

キーがadditionalDataが指定されていないスキーマを持つサブドキュメントであるということです、それはユーザ定義のJSONの一種です。しかし、このJSON(JSObject.parse(value)式を使用して)を解析すると、MongoDBに文字列として格納され、ネストされたドキュメント構造にする必要があります。

検索されたカップル時間、解決策は見つかりませんでした。何か案は?

+0

'' java.util.Map 'または' extend' 'java.util.HashMap 'クラスを作成できますか? –

+0

愚かな質問を申し訳ありませんが、どのように役立ちますか?とにかく、それはできる) –

+0

'DBObject'を使うことは有効なマッピングパターンであるため、コード(JSONパーシング部分)は素晴らしいでしょう。 ( "x"、 "y")); '新しいPerson()。setAdditionalData(new BasicDBObject(" key "、" value ")。 – mp911de

答えて

0

私はインターフェイスではなく、クラスですDBObject

JSON.parse(value) 

の結果をキャストの予想結果、本当にわかりません。 結果をDBObject BasicDBObject(またはBasicDBList)のインプリメンテーションにキャストしてみるか、またはコメントに記載されているように<文字列、オブジェクト>のマップにキャストしてください(インターフェイスでも動作します)。

Spring Data Restを使用している場合は、「手動」でデシリアライズする必要はありません。春はそれを行います。対処方法の基本的な例は、this answerを参照してください。 スキーマが指定されていないデータを置くことは、(mongodbはデータベースレベルでの作業を保存するのではなく、アプリケーションレベルで行う必要がありますが)最善の方法ではないかもしれませんが、それは働く。

+0

ありがとう、これは多くのhepls。 –

+0

@ GlebP。 FYI http://stackoverflow.com/help/someone-answers;) –

関連する問題