Сопоставление атрибута вложенной коллекции с MapStruct 1.2.0 - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь сопоставить следующие атрибуты с MapStruct 1.2.0 , основываясь на следующих классах

ClassA {
String id
List <Object1> artefacts
}

DTOClassA{
String id
List <Object2> artefacts
}

Object1 {
String id
String serialNo
}

Object2 {
String id
String serialNo
}

В моем интерфейсе сопоставления, как мне сопоставить serialNo изСписок артефактов ClassA в серийный Нет списка артефактов DTOClassA? Я пробовал следующее, но я не работал:

@Mapping(target="artefacts.serialNo", source="artefacts.serialNo")
ClassA mapToDto(DTOClassA dto)

любая помощь оценена

1 Ответ

1 голос
/ 15 октября 2019

с использованием MapStruct v1.3.0 и настройкой только следующего Mapper

@Mapper
public interface TestSOMapper {
    ClassA mapToDto(DTOClassA dto);
}

приводит к автоматической генерации следующего MapperImpl

...
protected Object1 object2ToObject1(Object2 object2) {
    if ( object2 == null ) {
        return null;
    }

    Object1 object1 = new Object1();

    object1.setId( object2.getId() );
    object1.setSerialNo( object2.getSerialNo() );

    return object1;
}
...

Это то, что вы хотели, не так лине так ли? Если имена свойств не совпадают, я бы предложил написать второе сопоставление для сопоставления Object1> Object2.

Надеюсь, это поможет!

...