gpt4 book ai didi

java - 如何在 MapStruct 中将相同的 TO 映射到新的相同 TO?

转载 作者:行者123 更新时间:2023-12-02 10:09:34 24 4
gpt4 key购买 nike

我的TO结构如下

OneComplexCto
-List<ComplexEto>
--List<SimpleEto>

我想让它与自身映射(用于触发 ValueChangeListener)

所以我想映射,

OneComplexCto mapOneComplexCto(OneComplexCto source, @TargetMapping OneComplexCto target);

这只是映射,

oneComplexCto.setComplexEtos(target.getComplexEtos);

我希望它能够映射所有 nasted ComplexEto 和那些 ComplexEto 内的所有 SimpleEto。 (显然我想为每个单独的字段调用 setter )。

最佳答案

正如您所注意到的,如果类型相同,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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com