Как сопоставить одно и то же TO с новым таким же TO в MapStruct? - PullRequest
0 голосов
/ 11 марта 2019

Моя структура TO выглядит следующим образом

OneComplexCto
-List<ComplexEto>
--List<SimpleEto>

Я хочу сопоставить ее с собой (для запуска ValueChangeListener)

Поэтому я хочу отобразить как,

OneComplexCto mapOneComplexCto(OneComplexCto source, @TargetMapping OneComplexCto target);

Это просто отображение,

oneComplexCto.setComplexEtos(target.getComplexEtos);

, и я хочу, чтобы оно отображало все действующие ComplexEto и все SimpleEto внутри этих ComplexEto.(По-видимому, я хочу вызвать сеттеры для каждого отдельного поля).

1 Ответ

1 голос
/ 13 марта 2019

Как вы заметили, MapStruct просто вызовет установщик в случае, если типы совпадают.Чтобы достичь глубокого клона, вам нужно определить соответствие между всеми типами.В вашем случае это выглядело бы так:

@Mapper
public interface ComplexMapper {

    OneComplexCto mapOneComplexCto(OneComplexCto source, @MappingTarget OneComplexCto target);

    List<ComplexEto> map(List<ComplexEto> complexEtos);

    ComplexEto map(ComplexEto complexEto);

    List<SimpleEto> map(List<SimpleEto> simpleEtos);

    SimpleEto map(SimpleEto simpleEto);
}

Вы должны подписаться и поднять mapstruct / mapstruct-695 , который ищет что-то, что позволит MapStruct отключить прямой набор тех же типов ивыполнить глубокий клон.

...