推土机将自定义转换器的返回值设为空

时间:2018-11-16 09:16:55

标签: java mapping dozer

因此,我试图在字段上使用带有Dozer的自定义转换器,该转换器需要从List <A>转换为List <B>。我使用了here中所述的“新API”, 提示给推土机正确的映射。因此,最后,XML配置如下所示:

    <field map-id="ResolveObjectId">
        <a>lista</a>
        <b>listb</b>
        <a-hint>org.bson.types.ObjectId</a-hint>
        <b-hint>SomeDTO</b-hint>
    </field>

    <mapping map-id="ResolveObjectId" >
        <class-a>org.bson.types.ObjectId</class-a>
        <class-b>SomeDTO</class-b>
        <field custom-converter-id="myCustomConverter">
            <a>this</a>
            <b>this</b>
        </field>
    </mapping>

自定义转换器(myCustomConverter)是由Spring容器创建的,因为它对其他bean有一些依赖性。然后将其传递到属性“ customConvertersWithId”中的DozerBeanMapper bean。

所以所有这一切似乎都正常,但是当自定义转换器被调用并返回SomeDTO对象的新实例时,Dozer实际上并不使用该对象。相反,Dozer会创建一个“ SomeDTO”类型的空实例,并将所有字段设置为null,而不是使用转换器中的对象。

当我的转换器使用“旧” API来实现CustomConverter接口并接受整个列表作为对象时,一切正常。

所以我认为这是我的配置问题还是推土机问题? 我正在使用带有JDK8支持的5.5.1版本来转换LocalDate:Dozer JDK8 support

其他一些Stack溢出问题涉及将List转换为List并提出了我上面介绍的解决方案。可以找到here

0 个答案:

没有答案