我有以下映射
@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/