我正在使用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字段都为空,因为未生成映射字段。
请任何帮助。
答案 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);
}