我们如何才能忽略MapStructs目标响应中的集合



我们如何才能忽略目标响应中的集合。

public class ClassSource{
private int id;
}

Destination :
public class ClassDestination {
private int id;
@JsonProperty("instructions")
@Valid
private List<Instructions> instructions = new ArrayList<>();
}

在Target中希望完全忽略结果中的指令列表,但其返回的却是空数组。。。我们怎么能忽视这些收藏品呢。

Output :
"id": "1245",
"instructions": []
expecting output like,
Output :
"id": "1245"

@Mapper(componentModel = "spring" ,  unmappedTargetPolicy = ReportingPolicy.WARN)
public interface PersonMapper {
@Mapping(target = "instructions, expression = "java(null)"")
ClassDestination  map(ClassSource source);
}
attempt2:
public interface PersonMapper {
@Mapping(target = "instructions, igonore =true")
ClassDestination  map(ClassSource source);
}

正如其他人建议的那样,您获得的是一个空列表,而不是null,因为它在ClassDestination中被初始化为一个新的ArrayList。

如果你不想从ClassDestination中删除初始化,但仍然想要一个null值,也许你可以尝试:

@Mapper(componentModel = "spring" ,  unmappedTargetPolicy = ReportingPolicy.WARN)
public interface PersonMapper {
@Mapping(target = "instructions", ignore = true)
ClassDestination  map(ClassSource source);
@AfterMapping
default void setNullValue(ClassSource source, @MappingTarget ClassDestination destination) {        
destination.setInstructions(null); 
}
}

最新更新