Используйте Java 8 необязательно с Mapstruct - PullRequest
1 голос
/ 10 октября 2019

У меня есть два класса:

public class CustomerEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String firstName;
    private String lastName;
    private String address;
    private int age;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}

и

public class CustomerDto {
    private Long customerId;
    private String firstName;
    private String lastName;
    private Optional<String> address;
    private int age;
}

Проблема в том, что Mapstruct не распознает необязательную переменную "address".

У кого-нибудь есть идеи, как решить эту проблему и позволить Mapstruct map Необязательные поля?

1 Ответ

3 голосов
/ 10 октября 2019

Это пока не поддерживается из коробки Mapstruct. На их Github есть открытый билет с просьбой об этой функциональности: https://github.com/mapstruct/mapstruct/issues/674

Один способ решить эту проблему был добавлен в комментарии к этому же билету: https://github.com/mapstruct/mapstruct/issues/674#issuecomment-378212135

@Mapping(source = "child", target = "kid", qualifiedByName = "unwrap")
Target map(Source source);

@Named("unwrap")
default <T> T unwrap(Optional<T> optional) {
    return optional.orElse(null);
}
...