繁体   English   中英

Orika映射嵌套的多次出现元素

[英]Orika Mapping nested multi-occurrence elements

我想将所有人(男人和女人)映射到与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();

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

我分为两个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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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