Отображение вложенного списка - PullRequest
0 голосов
/ 27 мая 2020

У меня есть объект со списком вложенных объектов

@Getter
@Setter
@NoArgsConstructor
public class Notification {
    private Long id
    private Long statusId;
    private List <External> external;
}


@Getter
@Setter
@NoArgsConstructor
public class External{
    private Long externalId;
    private  LocalDate date;
}

Dto

@Getter
@Setter
@NoArgsConstructor
public class NotificationPayload {
    private Long id;
    private Long statusId;
    private List <ExternalReferencePayload> external;
}


@Getter
@Setter
@NoArgsConstructor
public class ExternalReferencePayload {
    private Long externalReferenceId;
}

Mapper

@Mapper(componentModel = "spring")
public interface NotificationMapper{

  public Notification dtoToNotification(NotificationPayload  payload);
}

Я ищу способ сопоставить вложенный список

1 Ответ

0 голосов
/ 30 мая 2020

Чтобы выполнить настраиваемое сопоставление для определенных элементов, необходимо только определить метод сопоставления, а MapStruct позаботится обо всем остальном. В вашем примере:

@Mapper(componentModel = "spring")
public interface NotificationMapper{

  public Notification dtoToNotification(NotificationPayload  payload);

  @Mapping(target = "externalId", source = "externalReferenceId")
  public External dtoExternal(ExternalReferencePayload payload);
}

При этом вложенный список будет использовать метод сопоставления dtoExternal для выполнения сопоставления. С помощью @Mapping вы контролируете, как должно выполняться сопоставление между externalId и externalReferenceId

...