我使用Spring Data和MongoDB将非常动态的配置数据存储在工具箱中。这些Config
个对象包含一些组织字段以及data
类型Object
字段。在Config
的某些实例上,data
对象引用了一个更深层嵌套的子文档(例如数据库中的"data.foo.bar"
。 - 此字段名称由getDataField()
设置如下) 。这些Config
对象在被发送到数据库时被操纵,因此存储代码如下所示:
MongoTemplate template; // This is autowired into the class.
Query query; // This is the same query which (successfully) finds the object.
Config myConfig; // The config to create or update in Mongo
Update update = new Update()
.set(getDataField(), myConfig.getData())
.set(UPDATE_TIME_FIELD, new Date())
.setOnInsert(CREATE_TIME_FIELD, new Date())
.setOnInsert(NAME_FIELD, myConfig.getName());
template.upsert(query, update, Config.class);
Spring以递归方式将data
对象正确转换为DBObject
,但数据文档及其任何子文档都没有数据库中的"_class"
字段。因此,他们没有正确反序列化。
这些问题与先前在DATAMONGO-392,DATAMONGO-407和DATAMONGO-724中报道的问题非常相似。然而,这些都已得到修复。 (我使用的是spring-data-mongodb 1.4.2.RELEASE)
我做错了什么吗?这可能是一个Spring问题吗?
答案 0 :(得分:0)
遇到了类似的问题。一种解决方案是编写自己的Converter for Config.class。