有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有以下映射

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

当目标实体的childId为null时,如何配置映射器或映射。子项将被设置为null而不是实体。小孩身份证


共 (1) 个答案

  1. # 1 楼答案

    对我来说,这不是一个非常优雅的解决方案,而是一个有效的解决方案

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