java - 如果 MapStruct 中的源为 null,则将父目​​标设置为 null

标签 java mapstruct

我有以下映射

@Mappings({
        @Mapping(source = "id", target = "id"),
        @Mapping(source = "childId", target = "child.id")
})
Entity objectDtoToEntity(ObjectDTO objectDTO);

如何配置我的映射器或映射,以便当我将 childId 设置为 null 时,目标 Entity.child 将设置为 null 而不是 Entity.child.id?

最佳答案

对我来说,找到的不是一个非常优雅的解决方案,而是可行的解决方案。

首先将接口(interface)更改为抽象类,然后添加@AfterMapping

@Mappings({
        @Mapping(source = "id", target = "id"),
        @Mapping(source = "childId", target = "child.id")
})
public abstract Entity objectDtoToEntity(ObjectDTO objectDTO);


@AfterMapping
public Entity doAfterMapping(@MappingTarget Entity entity) {
    if (entity != null && entity.getChild().getId() == null) {
        entity.setChild(null);
    }
    return entity;
}

关于java - 如果 MapStruct 中的源为 null,则将父目​​标设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50887548/

相关文章:

java - 扫描仪返回未找到行

java - 继续循环直到良好的输入?

java - 如何在 android 上的 paho 中发布保留 true 的 mqtt 消息

java - 为什么这个 for 循环在 java 中不起作用?

java - 如果属性为空,如何让 MapStruct 不生成包装器对象?

java - 如何在 Java 中将属性映射到 Integer Mapstruct

Java servlet - 实现命令模式

java - Spring boot Mapstruct StackOverFlow错误

java - 映射器未正确映射 - mapstruct

java - 具有多个参数的 MapStruct QualifiedByName