繁体   English   中英

推土机深度集合映射

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM