我希望将所有人(男性和女性)与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。 info数组没有好的大小
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 :(得分:0)
我找到了解决方案,但这不是最好的。我有更好的回应,请在此处发布解决方案。
我分成两个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对象包含两个对象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>