camel-mongodb将java.util.Date保存为ISODate而不是NumberLong

时间:2014-07-09 03:36:28

标签: java mongodb date apache-camel isodate

我正在使用Apache Camel 2.13.1和MongoDB 2.2.2。我有以下路线:

<route id="camel-route" autoStartup="true">
    <from uri="file:/dir?move=${date:now:yyyyMMdd}\processed\${file:name}&amp;moveFailed=${date:now:yyyyMMdd}\failed\${file:name}" />

    <unmarshal>
        <jaxb prettyPrint="false" contextPath="com.example.model" />
    </unmarshal>

    <to uri="mongodb:connectionBean?database=db&amp;collection=coll&amp;operation=save" />
</route>

文件使用者端点获取XML文件并将其解组为POJO,该POJO包含数据类型为int,String和java.util.Date的多个字段。它保存/插入正常但日期字段保存为NumberLong类型,而不是类型ISODate。

但是如果我使用MongoDB Java驱动程序保存它(即创建DBObject,使用字段“new Date()”映射一个键),它将在MongoDB中保存为ISODate。我只能使用camel XML DSL吗?

编辑:深入研究代码和文档,camel-mongodb正在使用Jackson首先将其转换为Map,然后转换为BasicDBObject。有没有办法在XML DSL中我可以配置杰克逊的行为?最后一种方法是编写自定义类型转换器。

0 个答案:

没有答案