我的地图绘制器
@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文件夹,对其进行重建/重新编译..如何解决此问题?