java - 不从@Mapper 接口调用@AfterMapping
问题描述
我在使用 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())));
}
}
签出 MapStruct问题 1556 .. 您还可以从 1.3.1 开始禁用构建器
推荐阅读
- react-native - 在 React Native 中获取动态集合状态
- c# - 如何使用多态根元素反序列化 xml?
- java - 创建一个将 LSB 位添加为 1 或 0 的位集
- python - Processing.py - 类定义上的未知错误
- swift - 如何仅裁剪视图的左侧和右侧?
- asterisk - 星号广播
- java - java-使用提交事务插入表
- python - 在 Amazon Linux 中,无法在 virtualenv 中安装 pandas 和 numpy
- linux - 如何在 Linux 中正确使用带有 Bluez 的 HCI 设备
- mongodb - mongodb 集合未加载到配置单元表中