0

morphiaを使用してmongodbにHashMapを保存するにはどうすればよいですか?

これが morphia のバグなのか、それとも私のやり方が間違っているだけなのかはわかりません。

私はこのドメインモデルを持っていると言います

@Entity("person")
public class Person {
    private String property1;
    private String property2;
    private HashMap<String, Thing> things;
}

BasicDAO repo.save(personInstance) を拡張するクラスを使用してこれを保存しようとすると、次のエラーが表示されます: (UsedView は上記の例の Thing に相当します)

java.lang.IllegalArgumentException: クラス com.model.designed.UsedView を org.bson.BSONEncoder._putObjectField(BSONEncoder.java:205) でシリアライズできません org.bson.BSONEncoder.putMap(BSONEncoder.java:245) で org. .bson.BSONEncoder._putObjectField(BSONEncoder.java:177) の org.bson.BSONEncoder.putObject(BSONEncoder.java:121) の org.bson.BSONEncoder.putObject(BSONEncoder.java:67) の com.mongodb.OutMessage。 putObject(OutMessage.java:189) で com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:245) で com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:209) で com.mongodb.DBCollection.insert (DBCollection.java:66) com.mongodb.DBCollection.save(DBCollection.java:622) で com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:731) com.google.code.morphia で。 DatastoreImpl.save(DatastoreImpl.Java:793) com.google.code.morphia.dao.BasicDAO.save(BasicDAO.java:109) で com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:787)...

次に、変更した場合:

"private HashMap<String, Thing> things"

"private HashMap<String, String> things"

それはうまく保存されます。

何かご意見は?

とても有難い!

4

2 に答える 2

0

MorphiaThingエンティティとしてマッピングされていますか? そうでない場合、morphia はそれを mongo に保存する方法を知りません。

于 2011-11-21T16:38:24.157 に答える
0

私が気付いた古い質問ですが、私はこれに出くわしました:(未テスト)

「...これには、リストやマップなど、MongoDB ドライバーでサポートされている基本的な型を含めることができますが、Morphia にコンバーターを登録していない限り、複雑なオブジェクトを含めることはできません ( morphia.getMapper().getConverters().addConverter(new MyCustomTypeConverter())."

から: http://www.carfey.com/blog/using-mongodb-with-morphia/

述べたように:テストされていません。

h番目。

于 2011-12-07T20:48:49.853 に答える