gpt4 book ai didi

java - @AfterMapping 不是从@Mapper 接口(interface)调用的

转载 作者:行者123 更新时间:2023-12-04 11:52:06 24 4
gpt4 key购买 nike

我在使用 Mapstruct 时遇到问题。

我正在使用 @Mapper带注释的界面 @AfterMapping里面喜欢如下:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ConfiguracionReautorizacionMapper {

ConfiguracionReautorizacionDTO toConfiguracionReautorizacionDTO(final ConfiguracionReautorizacion configuracionReautorizacion);

ConfiguracionReautorizacion toConfiguracionReautorizacion(final ConfiguracionReautorizacionDTO configuracionReautorizacionDTO);

@AfterMapping
default void fillServiciosAsociados(@MappingTarget final ConfiguracionReautorizacionDTO configuracionReautorizacionDTO, final ConfiguracionReautorizacion configuracionReautorizacion) {
configuracionReautorizacionDTO.setTieneRolesOServiciosAsociados(!(CollectionUtils.isEmpty(configuracionReautorizacion.getRolesAplicacionEdesk()) && CollectionUtils.isEmpty(configuracionReautorizacion.getRolesAplicacionEdesk())));
}

}

映射器工作正常,但 @AfterMapping方法永远不会被调用。
我阅读了其他帖子,其中显示了使用 abstract class 的示例而不是 interface .

正在使用 abstract class强制使用 @AfterMapping注解?

最佳答案

您不能传递对象(假定它是不可变的)。你应该通过 builder.. 像这样:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ConfiguracionReautorizacionMapper {

ConfiguracionReautorizacionDTO toConfiguracionReautorizacionDTO(final ConfiguracionReautorizacion configuracionReautorizacion);

ConfiguracionReautorizacion toConfiguracionReautorizacion(final ConfiguracionReautorizacionDTO configuracionReautorizacionDTO);

@AfterMapping
default void fillServiciosAsociados(@MappingTarget final ConfiguracionReautorizacionDTO.Builder configuracionReautorizacionDTO, final ConfiguracionReautorizacion configuracionReautorizacion) {
configuracionReautorizacionDTO.setTieneRolesOServiciosAsociados(!(CollectionUtils.isEmpty(configuracionReautorizacion.getRolesAplicacionEdesk()) && CollectionUtils.isEmpty(configuracionReautorizacion.getRolesAplicacionEdesk())));
}

}

checkout MapStruct issue 1556 .. 您还可以从 1.3.1 开始禁用构建器

关于java - @AfterMapping 不是从@Mapper 接口(interface)调用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59028797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com