当前位置: 首页 > 知识库问答 >
问题:

推土机深度集合映射

钱修雅
2023-03-14

我在srcopobject中收集了StateTax和LocalTax。这需要映射到StateLocalTax的集合。在SrcObject中,如果我有三个SrcStateTax和两个SrcLocalTax,我想将它们映射到一个StateLocalTax集合,该集合将有四个元素。此集合的三个元素将包含stateTax信息和null destLocalTaxGroup,一个元素将包含destLocalTaxGroup集合和两个LocalTax信息。

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>

我正确地得到了一个错误,即在类中找不到字段(stateLocalTaxGroup.destLocalTaxGroup)的读写方法,但不确定如何解决此用例。

共有1个答案

漆雕欣德
2023-03-14

您的第一个推土机映射具有以下内容:

<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是一个列表对象。您无法从中直接访问“destLocalTaxGroup”,因此出现错误:未找到字段(stateLocalTaxGroup.destLocalTaxGroup)的读写方法。这表示列表对象中没有正确的getter/setter。

解决问题的捷径就是搬家

private List<DestLocalTax> destLocalTaxGroup;

到目标对象,以便两者具有相同的层次结构。

 类似资料:
  • 我是使用dozer的新手。我需要将集合映射到一个类,该类是集合中源类的属性。我有如下类技术 我想映射到 哪里 我的推土机绘图将是什么样子?

  • 所以,我有一个问题,这里的人可能会帮助我与推土机。 背景:我设置了Dozer来将我的持久性实体映射到它们的DTO类。这很简单,我只是创建一个实体类的精确副本作为POJO,并允许dozer通配符查看字段的名称是否与源字段匹配。我正在使用自定义映射器处理Hibernate延迟加载问题,就像这里所做的那样。我告诉Dozer如何通过一个类来映射每个类,该类扫描实体中名为@EntityMap(DTOxxx.

  • 我有一个非常复杂的对象。 我的目标是将问题答案集映射展平,以便将值中的所有列表合并为一个 我没有试图找出如何在Dozer中将所有这些列表合并到一个列表中,我甚至不确定它是否能够做到,而是编写了一个自定义setter。 我假设这意味着Dozer只需读取第一个对象的调查并将其放入makeFlatSurvey,但它读取调查对象上的questionAnswerGroup字段,然后遍历QuestionAns

  • 我试图使用Dozer映射UUID字段,遇到了Dozer github上提到的一个问题: https://github.com/DozerMapper/dozer/issues/83 问题是-显然,Dozer依赖于UUID中不存在的默认无参数构造函数。因此,该链接显示了如何告知推土机执行参考复制。然而,使用该提示并没有帮助,我仍然会遇到以下异常: org.dozer.java.lang.java.u

  • 我在Spring启动时使用推土机映射器。如果我将数据从实体映射到EntityDTO,那么dozer maper的工作就是将数据从实体类复制到EntityDTO,对于原语也是如此。但是假设我有这样一门课 和名称为EntityDTO的DTO 那么它不会将数据从entityChild映射到EntityChildTos,有人能帮我解决这个问题吗?

  • 在Dozer的帮助下,我想将映射到DTO类 但是这两种设置