gpt4 book ai didi

java - 推土机:将单个字段映射到列表中

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:38 33 4
gpt4 key购买 nike

如何将单个字段映射到 Dozer 中的 List/Collection

class SrcFoo {
private String id;
private List<SrcBar> bars;
}

class SrcBar {
private String name;
}

这是我的目标对象:

class DestFoo {
private List<DestBar> destBars;
}

class DestBar {
private String fooId; // Populated by SrcFoo.id
private String barName;
}

我希望所有 DestBar.fooId(DestBar 的整个列表)都填充有 SrcFoo.id

这个问题与这里发布的这个问题类似,期望我想将我的单个字段映射到列表中的每个项目。 Dozer: map single field to Set

我尝试了以下方法,但它只为列表中的第一项填充了 DestBar.fooId

<mapping> 
<class-a>SrcFoo</class-a>
<class-b>DestFoo</class-b>
<field>
<a>bars</a>
<b>destBars</b>
</field>
<field>
<a>id</a>
<b>destBars.fooId</b> <!-- same affect as destBars[0].fooId ? -->
</field>
</mapping>

最佳答案

Dozer 不支持这种类型的映射。为了进行这种类型的映射,您必须知道集合中的索引(静态映射)。这是自定义转换器的工作,创建一个字符串转换器到列表(DestBar),如下所示:

public class YourConverter extends DozerConverter<String, List>

在您的转换器中实现映射逻辑(只需在需要的地方设置字符串 ID)并像这样配置您的推土机文件:

<mapping> 
<class-a>SrcFoo</class-a>
<class-b>DestFoo</class-b>
...
<field custom-converter="yourpackage.YourConverter">
<a>id</a>
<b>destBars</b>
</field>
</mapping>

关于java - 推土机:将单个字段映射到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11262525/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com