如何使用morphia将HashMaps存储在mongodb中?
我不确定这是否是吗啡中的错误,或者我只是做错了。
说我有这个域名模型
@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) at 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.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"
它保存得很好。
有什么想法吗?
非常感谢!答案 0 :(得分:0)
将Thing
映射为Morphia实体吗?如果没有,morphia不知道如何将它保存到mongo。
答案 1 :(得分:0)
“...这可能包含MongoDB驱动程序支持的任何基本类型,包括列表和地图,但没有复杂的对象,除非您已经注册了Morphia的转换器(例如morphia.getMapper().getConverters().addConverter(new MyCustomTypeConverter())
。”
自: http://www.carfey.com/blog/using-mongodb-with-morphia/
如上所述:未经测试。
第h