Моя первоначальная ситуация такова: у меня есть классы со вложенными классами. Большинство атрибутов вложенного во входные данные класса можно напрямую сопоставить с целевым вложенным классом. Но один атрибут вложенного во входные данные класса должен быть напрямую сопоставлен с классом taget.
Это мой код:
Код: Выделить всё
public class Input {
public String aa;
public NestedClass nestedMember;
public static class NestedClass {
public String ab;
public String ac;
public String ad;
public String ae;
}
}
public class Target {
public NestedClass nestedMember;
public static class NestedClass {
public String ba;
public String bb;
public String bc;
public String bd;
}
}
@Mapping(target = "nestedMember.ba", source = "aa")
@Mapping(target = "nestedMember", source = "nestedMember")
Target map(Input input);
@Mapping(target = "bb", source = "ab")
@Mapping(target = "bc", source = "ac")
@Mapping(target = "bd", source = "ad")
@Mapping(target = "ba", ignore = true)
NestedClass mappingNested(test.Input.NestedClass nestedClass);
Но сгенерированный класс выглядит так:
Код: Выделить всё
public class MyMapperImpl implements MyMapper {
@Override
public Target map(Input input) {
if ( input == null ) {
return null;
}
Target target = new Target();
if ( input.nestedMember != null ) {
if ( target.nestedMember == null ) {
target.nestedMember = new NestedClass();
}
nestedClassToNestedClass( input.nestedMember, target.nestedMember );
}
if ( target.nestedMember == null ) {
target.nestedMember = new NestedClass();
}
inputToNestedClass( input, target.nestedMember );
return target;
}
@Override
public NestedClass mappingNested(test.Input.NestedClass nestedClass) {
if ( nestedClass == null ) {
return null;
}
NestedClass nestedClass1 = new NestedClass();
nestedClass1.bb = nestedClass.ab;
nestedClass1.bc = nestedClass.ac;
nestedClass1.bd = nestedClass.ad;
return nestedClass1;
}
protected void nestedClassToNestedClass(test.Input.NestedClass nestedClass, NestedClass mappingTarget) {
if ( nestedClass == null ) {
return;
}
}
protected void inputToNestedClass(Input input, NestedClass mappingTarget) {
if ( input == null ) {
return;
}
mappingTarget.ba = input.aa;
}
}
Есть ли у кого-нибудь идея?
С уважением.
Подробнее здесь: https://stackoverflow.com/questions/686 ... sses-issue