@ Сопоставление с пользовательской исходной и целевой переменными не работает должным образом, если в целевой переменной есть то же имя, что и у исходного - PullRequest
2 голосов
/ 08 мая 2019

У меня ниже классов Source и Target, я использую lombok для генерации геттеров и сеттеров

public class Target {
    private String name;
    private String newName;
}

public class Source {
    private String name;
}

и скажем, хочу ли я сопоставить Source.name с Target.newName Я использую ниже класс Mapper с @Mapping для определения исходных и целевых переменных.

но как только я скомпилирую код и проверю сгенерированный ClassMapperImpl он сопоставляет Source.name с Target.name, а не с Target.new Name

@Mapper
public interface ClassMapper {

    @Mapping(source = "name", target = "newName")
    Target sourceToTarget(Source s);
}

1 Ответ

1 голос
/ 11 мая 2019

Я думаю, что они оба отображаются, когда я пытаюсь:

public class ClassMapperImpl implements ClassMapper {

    @Override
    public Target sourceToTarget(Source s) {
        if ( s == null ) {
            return null;
        }

        Target target = new Target();

        target.setNewName( s.getName() );
        target.setName( s.getName() );

        return target;
    }
}

Пожалуйста, используйте игнорировать в свойстве name.

@Mapper
public interface ClassMapper {

    @Mapping(source = "name", target = "newName")
    @Mapping(ignore = true, target = "name")
    Target sourceToTarget(Source s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...