0

如何使用 morphia 在 mongodb 中存储 HashMaps?

我不确定这是否是 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: can't serialize class com.model.design.UsedView at org.bson.BSONEncoder._putObjectField(BSONEncoder.java:205) at org.bson.BSONEncoder.putMap(BSONEncoder.java:245) at 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) at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:245) at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:209) at 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.DatastoreImpl.save(DatastoreImpl.java:787) 在 com.google.code.morphia.dao.BasicDAO.save(BasicDAO.java:109)...

然后,如果我改变:

"private HashMap<String, Thing> things"

"private HashMap<String, String> things"

它保存得很好。

有什么想法吗?

非常感激!

4

2 回答 2

0

Thing映射为 Morphia 实体?如果没有,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/

如前所述:未经测试。

hth。

于 2011-12-07T20:48:49.853 回答