【问题标题】:Orika Mapping nested multi-occurrence elementsOrika Mapping 嵌套的多次出现的元素
【发布时间】:2018-02-20 18:48:32
【问题描述】:

我想用 Orika 将所有人(男性和女性)映射到同一个 PersonDto。

class Name {
   private String first;
   private String last;
   private String fullName;
   // getters/setters 
}

class Womens{
   private List<Name> names;
   // getters/setters 
}

class Mens{
   private List<Name> names;
   // getters/setters 
}

class Person {
   private Mens mens;
   private Womens womens;
   // getters/setters 
}

class PersonDto { 
  private List<Info> info;
  // getters/setters omitted
}

class Info { 
  private String notes;
  // getters/setters omitted
}

如果我只测试男性,可以吗?

mapperFactory.classMap(Person.class, PersonDto.class)
       .field("mens.names{first}", "info[0].notes")
       .field("mens.names{last}", "info[1].notes")
       .field("mens.names{fullName}", "info[2].notes")
       .register();

如果我只测试女性,可以吗?

mapperFactory.classMap(Person.class, PersonDto.class)
       .field("womens.names{first}", "info[0].notes")
       .field("womens.names{last}", "info[1].notes")
       .field("womens.names{fullName}", "info[2].notes")
       .register();

但是,如果我测试男性和女性,是不是 KO。信息数组没有合适的大小

mapperFactory.classMap(Person.class, PersonDto.class)
       .field("mens.names{first}", "info[0].notes")
       .field("mens.names{last}", "info[1].notes")
       .field("mens.names{fullName}", "info[2].notes")
       .field("womens.names{first}", "info[3].notes")
       .field("womens.names{last}", "info[4].notes")
       .field("womens.names{fullName}", "info[5].notes")
       .register();

【问题讨论】:

    标签: java mapping orika


    【解决方案1】:

    我找到了一个解决方案,但它不是最好的。如果您有更好的响应,请在此处发布您的解决方案。

    我分成两个Infomaton类:

    @XmlRootElement(name = "notes")
    class InfoMen { 
        private String notes;
        // getters/setters omitted
    }
    
    @XmlRootElement(name = "notes")
    class InfoWomen { 
        private String notes;
        // getters/setters omitted
    }
    
    @XmlRootElement(name = "persons")
    class PersonDto { 
        private List<InfoMen> infoMen;
        private List<InfoWomen> infoWomen;
    
        @XmlElement(name = "notes")
        public List<InfoMen> getInfoMen() {
            return infoMen;
        }
    
        @XmlElement(name = "notes")
        public List<InfoWomen> getInfoWomen() {
            return infoWomen;
        }
        // setters omitted
    }
    

    我的 XML 输出正常,但我的 PersonDto 对象包含两个对象而不是一个。

    <persons>
        <notes>
            <first>Petter</first>
            <last>Butter</last>
            <fullName>Petter Butter<fullName>
        </notes>
        <notes>
            <first>Wenddy</first>
            <last>Window</last>
            <fullName>Wenddy Window<fullName>
        </notes>
    </persons>
    

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 2016-08-21
      • 2020-02-08
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多