[英]Dozer deep collection mapping
我在SrcObject中有StateTax和LocalTax的集合。 这需要映射到StateLocalTax的集合。 在SrcObject中,如果我有三个SrcStateTax和两个SrcLocalTax,我想将它们映射到StateLocalTax的集合,该集合将具有四个元素。 此集合的三个元素将包含具有空destLocalTaxGroup的stateTax信息,而一个元素将包含具有两个LocalTax信息的destLocalTaxGroup的集合。
public class SrcObject {
private List<SrcStateTax> srcStateTaxGroup;
private List<SrcLocalTax> srcLocalTaxGroup;
//Getter setter
}
public class SrcStateTax {
private String srcStateCode;
private String srcStateTaxAmount;
……
//Getter setter
}
public class SrcLocalTax {
private String srcLocalCode;
private String srcLocalTaxAmt;
……
//Getter setter
}
目标对象为
public class DestObject {
private List<StateLocalTax> stateLocalTaxGroup;
……..
//Getter setter
}
public class StateLocalTax {
private String destStateCode;
private String destStateTaxAmount;
…….
private List<DestLocalTax> destLocalTaxGroup;
//Getter setter
}
public class DestLocalTax {
private String destLocalCode;
private String destLocalTaxAmt;
}
推土机映射:
<mapping>
……….
<field map-id="map-StateTax">
<a>srcStateTaxGroup</a>
<b>stateLocalTaxGroup</b>
<a-hint>com.sample.source.SrcStateTax</a-hint>
<b-hint>com.sample.target.StateLocalTax</b-hint>
</field>
<field map-id="map-LocalTax">
<a>srcLocalTaxGroup</a>
<b>stateLocalTaxGroup.destLocalTaxGroup </b>
<a-hint>com.sample.source.SrcLocalTax</a-hint>
<b-hint>com.sample.target.DestLocalTax</b-hint>
</field>
</mapping>
<mapping map-id="map-StateTax">
<class-a>com.sample.source.SrcStateTax</class-a>
<class-b>com.sample.target.StateLocalTax</class-b>
<field>
<a>srcStateCode</a>
<b>destStateCode</b>
</field>
<field>
<a>srcStateTaxAmount</a>
<b>destStateTaxAmount</b>
</field>
</mapping>
<mapping map-id="map-1099RLocalTaxGroups">
<class-a>com.sample.source.SrcLocalTax</class-a>
<class-b>com.sample.target.DestLocalTax</class-b>
<field>
<a>srcLocalCode</a>
<b>destLocalCode</b>
</field>
<field>
<a>srcLocalTaxAmt</a>
<b>destLocalTaxAmt</b>
</field>
</mapping>
我正确地收到错误消息"No read or write method found for field (stateLocalTaxGroup.destLocalTaxGroup) in class ..
但不确定如何解决此用例。
您的第一个推土机映射具有以下内容:
<field map-id="map-LocalTax">
<a>srcLocalTaxGroup</a>
**<b>stateLocalTaxGroup.destLocalTaxGroup </b>**
<a-hint>com.sample.source.SrcLocalTax</a-hint>
<b-hint>com.sample.target.DestLocalTax</b-hint>
</field>
stateLocalTaxGroup是一个List对象。 您不能从中直接访问“ destLocalTaxGroup”,因此出现错误:找不到字段(stateLocalTaxGroup.destLocalTaxGroup)的读取或写入方法。 就是说列表对象中没有正确的getter / setter方法。
解决问题的最快捷方法就是搬家
private List<DestLocalTax> destLocalTaxGroup;
因此,您的目标对象具有相同的层次结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.