Mapstruct自动生成的impl-映射到错误的方法

时间:2019-11-29 16:21:35

标签: java spring mapstruct

我的地图绘制器

@Mapper(uses = EditedPieceFilter.class)
interface EditedPieceMapper {

@Mapping(target = "endAge", source = "dto", qualifiedBy = EditedPieceFilter.EndAge.class)
@Mapping(target = "earnedPensionAmount", source = "dto", qualifiedBy = EditedPieceFilter.EarnedPensionAmount.class)
@BeanMapping(ignoreByDefault = true)
EditedPiece toEntity(ConversionConditionsDto dto,
                     InsurancePeriod insurancePeriod,
                     @Context CalculationResultDto calDto);

public class EditedPieceFilter {

@EndAge
public Integer endAge(ConversionConditionsDto dto , @Context CalculationResultDto calDto) {
    if (dto.getEndAge() != 0)
        return dto.getEndAge();
    else if (calDto.getPensionEndAge() != 0)
        return calDto.getPensionEndAge();
    else return null;
}


@EarnedPensionAmount
public BigDecimal earnedPensionAmount(ConversionConditionsDto dto, @Context CalculationResultDto calDto) {
    if (dto.getEuroAmount() != null)
        return dto.getEuroAmount();
    else
        return calDto.getPensionAmount();

}

@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@interface EndAge {
}


@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@interface EarnedPensionAmount {
}

}

当我尝试对此进行测试时,由于mapstruct的隐含似乎将其映射到错误的方法,因此它给我错误的结果,这就是我在EditedPieceMapperImpl.class中看到的内容-请参见 setEarnedPensionAmount 调用 endAge 而不是 earnedPensionAmount

        if (dto != null) {
            editedPiece.setEndAge(this.editedPieceFilter.endAge(dto, calDto));
            editedPiece.setPaymentMethod(this.editedPieceFilter.paymentMethod(dto));
            editedPiece.setEarnedPensionAmount(this.editedPieceFilter.endAge(dto, calDto).longValue());
        }

我已经尝试删除out文件夹,对其进行重建/重新编译..如何解决此问题?

0 个答案:

没有答案