如果Map在MapStruct中为null,则将父目​​标设置为null

时间:2018-06-16 11:35:30

标签: java mapstruct

我有以下映射

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

我如何配置我的Mapper或Mappings,所以当我将childId作为null时,目标Entity.child将设置为null而不是Entity.child.id?

1 个答案:

答案 0 :(得分:2)

发现不是一个非常优雅的解决方案,对我而言是工作解决方案。

首先将界面更改为抽象类,然后添加@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;
}