2017-09-12 10 views
0

すべての人(メンと女性)をオリカと同じ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(); 

、OKですが、私はメンズとレディースでテストならば、それは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(); 

答えて

0

を持っていません。私はあなたのより良い応答を持っています、ここにあなたのソリューションを投稿してください。

私は2つの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出力は、OKですが、私のPersonDtoオブジェクトは、1つの二つのオブジェクトのinstandが含まれています。

<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> 
関連する問題