我的TO结构如下
OneComplexCto
-List<ComplexEto>
--List<SimpleEto>
我想让它与自己映射(用于触发ValueChangeListener)
所以我想像
OneComplexCto mapOneComplexCto(OneComplexCto source, @TargetMapping OneComplexCto target);
就像映射一样
oneComplexCto.setComplexEtos(target.getComplexEtos);
我想让它映射那些ComplexEto中所有嵌套的ComplexEto和所有SimpleEto。 (显然,我想为每个字段调用设置器)。
最佳答案
您已经注意到,如果类型相同,MapStruct只会调用setter。为了实现深度克隆,您需要定义所有类型之间的映射。您的情况如下所示:
@Mapper
public interface ComplexMapper {
OneComplexCto mapOneComplexCto(OneComplexCto source, @MappingTarget OneComplexCto target);
List<ComplexEto> map(List<ComplexEto> complexEtos);
ComplexEto map(ComplexEto complexEto);
List<SimpleEto> map(List<SimpleEto> simpleEtos);
SimpleEto map(SimpleEto simpleEto);
}
您应遵循并赞扬mapstruct/mapstruct-695,它寻找允许MapStruct禁用相同类型的直接集并执行深度克隆的内容。
关于java - 如何在MapStruct中将相同的TO映射到新的相同的TO?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55101112/