Spring 工厂豆';客户转换';找不到

Spring 工厂豆';客户转换';找不到,spring,spring-data-mongodb,Spring,Spring Data Mongodb,我正在尝试将我的MongoDB库更新到最新版本,现在出现了几个错误,这些错误可能与此相关,也可能与此无关。第一个是在我的applicationContext.xml中,在该部分旁边出现错误“Factory bean'customConversions'not found”: <mongo:mapping-converter base-package="com.my.model"> <mongo:custom-converters base-package="com.my

我正在尝试将我的MongoDB库更新到最新版本,现在出现了几个错误,这些错误可能与此相关,也可能与此无关。第一个是在我的applicationContext.xml中,在该部分旁边出现错误“Factory bean'customConversions'not found”:

<mongo:mapping-converter base-package="com.my.model">
    <mongo:custom-converters base-package="com.my.model.converters">
    </mongo:custom-converters>
</mongo:mapping-converter>
我使用以下Maven依赖项:

org.springframework.data:springdatamongodb:1.1.1.RELEASE org.springframework:core、spring上下文等:3.2.1.RELEASE


这只是一个坏版本,还是我做错了什么?我以前在模型类中使用java.util.Date没有问题。

您是否将其添加到MongoTemplate

好的,这是一段时间以后的事了,但它可能有助于人们从遗留MongoDB版本升级代码和数据库

我认为Mongo改变了一些数据的内部存储方式。也可能是我们将数据导出到JSON,然后再次导入。无论哪种方式,我们留下的数据既有不正确的日期,也有不正确的ObjectId表示。SpringDataMongo曾经处理过这个问题,但不管出于什么原因,现在不再处理了。我们的解决方案是在Mongo shell中运行以下类型的脚本:

db.entity.find().forEach(
  function(o){
    delete o._id;
    if (typeof(o.createdTs) !== 'undefined' && typeof(o.createdTs.sec) !== 'undefined'){
        o.createdTs = ISODate(o.createdTs.sec);
    }
    if (typeof(o.updatedTs) !== 'undefined' && typeof(o.updatedTs.sec) !== 'undefined'){
        o.updatedTs = ISODate(o.updatedTs.sec);
    }

    try{
        db.entity2.insert( o );
    } catch (err){
        print("Following node conversion failed.  Error is: " + err);
        printjson(o);
    }

  }
);

db.entity2.renameCollection('entity', true);
现在这对我们来说很有效,因为我们根本没有使用Mongo对象ID——而是使用了一个不同的、唯一索引的UUID字段作为ID。如果您在任何其他地方引用objectId,则需要从旧字符串id创建objectId并使用它


这使我们能够升级到spring-data-1.1.0及更高版本,并意味着我们现在可以引入spring-data-neo4j,因为这个问题,我们以前无法使用这个项目。

我有相同的映射异常(
org.springframework.data.mapping.model.MappingException
)。MongoDB记录中的一个日期以某种方式具有以下格式的日期,java.util.date无法对其进行解码:

"createdTime": {
    "dateTime": ISODate("2016-09-15T02:01:00.560Z"),
    "offset": {
        "_id": "Z",
        "totalSeconds": 0
    },
    "zone": {
        "_class": "java.time.ZoneOffset",
        "_id": "Z",
        "totalSeconds": 0
    }
}

删除该记录后,一切正常。

FYI,我已恢复到spring data mongodb 1.0.3.RELEASE,没有这些问题。仍然有兴趣知道为什么会发生这种情况,但是,为了将来的更新是的,配置是在那里从早期版本-我没有改变它。当我升级我的Maven依赖项时,这个问题突然出现了——我现在只是回到旧版本,直到我有更多的时间来使用它
"createdTime": {
    "dateTime": ISODate("2016-09-15T02:01:00.560Z"),
    "offset": {
        "_id": "Z",
        "totalSeconds": 0
    },
    "zone": {
        "_class": "java.time.ZoneOffset",
        "_id": "Z",
        "totalSeconds": 0
    }
}