当DTO位于DOZER映射文件中的散列映射内时,如何访问DTO属性

时间:2011-11-08 19:33:07

标签: dozer

我有一个UserDTO,它有userID字段。 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>

1 个答案:

答案 0 :(得分:1)

您必须为此定义custom converter。 dom,dozer xml映射不支持基于键的hashmap查找。

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

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

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

@Override
public Long convertTo(HashMap map, Long userId) {
    UserDTO dto = (UserDTO)map.get("User_Details");
    return dto.getUserId();
}