[英]Dozer: Map single field into a List
如何將單個字段映射到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.fooId
列表)都使用SrcFoo.id
填充
這個問題與此處發布的問題類似,我希望將單個字段映射到列表中的每個項目。 推土機:將單個字段映射到設置
我嘗試了以下操作,但DestBar.fooId
為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>
推土機不支持這種類型的映射。 為了進行這種類型的映射,您必須知道Collection上的索引(靜態映射)。 這是一個自定義轉換器的Job,創建一個String to List(of DestBar)的轉換器,如下所示:
public class YourConverter extends DozerConverter<String, List>
在轉換器中實現映射邏輯(只需在需要時設置String Id)並配置您的dozer文件,如下所示:
<mapping>
<class-a>SrcFoo</class-a>
<class-b>DestFoo</class-b>
...
<field custom-converter="yourpackage.YourConverter">
<a>id</a>
<b>destBars</b>
</field>
</mapping>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.