如何在 Mapstruct 中管理阴影
How to manage shadowing in Mapstruct
public abstract class CaseDTOBase{
private Integer version;
public static void mapFromCaseToCaseDTO(Fall fall, CaseDTOBase caseDTOBase) {
caseDTOBase.setVersion(fall.getVersion());}
}
}
public class AufCaseDTO extends CaseDTOBase{
private Integer version;
public static AufCaseDTO from(AufFall aufFall, Fall fallGemeldetAnPKR) {
AufCaseDTO aufCaseDTO = AufCaseDTO.builder().version(aufFall.getVersion()).build();
CaseDTOBase.mapFromCaseToCaseDTO(aufFall.getFall(), aufCaseDTO);
return aufCaseDTO;
}
}
如您所见,一个变量使用 aufFall.getVersion(),另一个版本变量使用 aufFall.getFall().getVersion(),我无法在 MapStruct 中添加这两个变量因为它说它不允许重复。我怎样才能在 MapStruct 中做到这一点?
@Mapping(target = "version", source = "aufFall.version")
@Mapping(target = "version", source = "aufFall.fall.version")
@Mapping(target = "pksamAufFallDTO", source = "aufFall")
AufCaseDTO from(AufFall aufFall, Fall fallGemeldetAnPKR);
MapStruct 不支持在多个映射中使用相同的 target
属性。要实现您正在寻找的东西,您必须为其编写自己的方法。
例如
@Mapper
public interface MyMapper {
@Mapping(target = "version", source = "aufFall", qualifiedByName = "aufFallToVersion")
@Mapping(target = "pksamAufFallDTO", source = "aufFall")
AufCaseDTO from(AufFall aufFall, Fall fallGemeldetAnPKR);
@Named("aufFallToVersion")
default Integer toVersion(AufFall AufFall) {
if (aufFall == null) {
return null;
}
if (aufFall.getVersion() != null) {
return aufFall.getVersion();
} else if (aufFall.getFall() != null && aufFall.getFall().getVersion() != null) {
return aufFall.getFall().getVersion();
} else {
return null;
}
}
}
public abstract class CaseDTOBase{
private Integer version;
public static void mapFromCaseToCaseDTO(Fall fall, CaseDTOBase caseDTOBase) {
caseDTOBase.setVersion(fall.getVersion());}
}
}
public class AufCaseDTO extends CaseDTOBase{
private Integer version;
public static AufCaseDTO from(AufFall aufFall, Fall fallGemeldetAnPKR) {
AufCaseDTO aufCaseDTO = AufCaseDTO.builder().version(aufFall.getVersion()).build();
CaseDTOBase.mapFromCaseToCaseDTO(aufFall.getFall(), aufCaseDTO);
return aufCaseDTO;
}
}
如您所见,一个变量使用 aufFall.getVersion(),另一个版本变量使用 aufFall.getFall().getVersion(),我无法在 MapStruct 中添加这两个变量因为它说它不允许重复。我怎样才能在 MapStruct 中做到这一点?
@Mapping(target = "version", source = "aufFall.version")
@Mapping(target = "version", source = "aufFall.fall.version")
@Mapping(target = "pksamAufFallDTO", source = "aufFall")
AufCaseDTO from(AufFall aufFall, Fall fallGemeldetAnPKR);
MapStruct 不支持在多个映射中使用相同的 target
属性。要实现您正在寻找的东西,您必须为其编写自己的方法。
例如
@Mapper
public interface MyMapper {
@Mapping(target = "version", source = "aufFall", qualifiedByName = "aufFallToVersion")
@Mapping(target = "pksamAufFallDTO", source = "aufFall")
AufCaseDTO from(AufFall aufFall, Fall fallGemeldetAnPKR);
@Named("aufFallToVersion")
default Integer toVersion(AufFall AufFall) {
if (aufFall == null) {
return null;
}
if (aufFall.getVersion() != null) {
return aufFall.getVersion();
} else if (aufFall.getFall() != null && aufFall.getFall().getVersion() != null) {
return aufFall.getFall().getVersion();
} else {
return null;
}
}
}