Spring Data partial upsert not persisiting type information

时间:2014-07-25 21:54:43

标签: spring-data spring-data-mongodb

我使用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-392DATAMONGO-407和DATAMONGO-724中报道的问题非常相似。然而,这些都已得到修复。 (我使用的是spring-data-mongodb 1.4.2.RELEASE)

我做错了什么吗?这可能是一个Spring问题吗?

1 个答案:

答案 0 :(得分:0)

遇到了类似的问题。一种解决方案是编写自己的Converter for Config.class。