为什么Mapstruct无法生成字段映射

时间:2019-10-10 14:22:51

标签: spring-boot mapping mapstruct

我正在使用mapstruct进行两种计算之间的映射:Candidate和CandidateDTO。

我的映射器界面如下:

@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 个答案:

答案 0 :(得分:2)

MapStruct尚不支持此功能。在我们的问题跟踪器中查看问题mapstruct/mapstruct#674

您可以做的是使用默认的自定义方法。

@Mapper
public interface CandidateMapper {

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

    CandidateDTO toCandidateDTO(CandidateEntity candidateEntity);
}