当 DTO 位于 DOZER 映射文件中的哈希映射内时如何访问 DTO 属性

发布于 2024-12-14 11:34:52 字数 559 浏览 1 评论 0原文

我有一个 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>

I have a UserDTO which has userID field. The HashMap has this DTO as value for key User_Details.

I want to use DOZER mapping to set the userID attribute from HashMap->User_Details->userId to attribute UserDisplayDTO->userId.

How can I do this in Dozer XML mapping?

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

此刻的回忆 2024-12-21 11:34:52

您必须为此定义一个自定义转换器。 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();
}

You have to define a custom converter for this. Atm, dozer xml mapping doesn't support a keybased hashmap lookup.

So for your case, you need something like

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

In the UserIdConverter implementation, you would have to retrieve the value from the hashmap and return it (null checking etc. omitted for the sake of clarity):

@Override
public Long convertTo(HashMap map, Long userId) {
    UserDTO dto = (UserDTO)map.get("User_Details");
    return dto.getUserId();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文