1

我有一个具有 userID 字段的 UserDTO。HashMap 将此 DTO 作为键 User_Details 的值。

我想使用 DOZER 映射将 userID 属性从HashMap->User_Details->userId设置为属性UserDisplayDTO->userId

如何在 Dozer XML 映射中执行此操作?

<mapping map-id="testMapping">
    <class-a>java.util.HashMap</class-a>
    <class-b>com.common.dto.UserDisplayDTO</class-b>
    <field>
        <a key="User_Details">this</a>
        <b>userId</b>
    </field>
</mapping>
4

1 回答 1

2

您必须为此定义一个自定义转换器。Atm,dozer xml 映射不支持基于键的哈希映射查找。

因此,对于您的情况,您需要类似的东西

<field custom-converter="com.your.custom.converter.UserIdConverter">
    <a>hashmapfield</a>
    <b>userId</b>
</field>

在 UserIdConverter 实现中,您必须从哈希图中检索值并返回它(为清楚起见,省略了空值检查等):

@Override
public Long convertTo(HashMap map, Long userId) {
    UserDTO dto = (UserDTO)map.get("User_Details");
    return dto.getUserId();
}
于 2011-11-23T14:04:21.797 回答