Почему Mapstruct не может генерировать отображение полей - PullRequest
1 голос
/ 10 октября 2019

Я использую mapstruct для сопоставления между двумя calsses: Candidate и CandidateDTO.

Мой интерфейс mapper выглядит так:

@Mapper
public interface CandidateMapper {
    CandidateDTO toCandidateDTO(Optional<CandidateEntity> candidateEntity);
}

И сгенерированный источник выглядит так:

public class CandidateMapperImpl implements CandidateMapper {
    @Override
    public CandidateDTO toCandidateDTO(Optional<CandidateEntity> candidateEntity) {
        if ( candidateEntity == null ) {
            return null;
        }
        CandidateDTO candidateDTO = new CandidateDTO();
        return candidateDTO;
    }
}

Моя проблема в том, что при отображении я получаю все поля DTO пустыми, поскольку поле отображения не генерируется.

Любая помощь, пожалуйста.

1 Ответ

2 голосов
/ 11 октября 2019

Это еще не поддерживается из коробки MapStruct. Посмотрите на проблему mapstruct / mapstruct # 674 в нашем трекере ошибок.

Что вы можете сделать, так это использовать пользовательский метод по умолчанию.

@Mapper
public interface CandidateMapper {

    default CandidateDTO toCandidateDTO(Optional<CandidateEntity> candidateEntity) {
        return toCandidateDTO(candidateEntity.orElse(null);
    }

    CandidateDTO toCandidateDTO(CandidateEntity candidateEntity);
}
...