gpt4 book ai didi

java - Dozer 将对象映射到

转载 作者:行者123 更新时间:2023-11-30 06:12:48 26 4
gpt4 key购买 nike

我有两个单独的对象要映射:

Class A {
List<AA> listAA;
// get set methods...
}

Class B{
C objectC = new C();
// get set methods...
}

Class C{
List<CC> listCC;
// get set methods...
}

Class AA{
String aa;
// get set methods...
}

Class CC{
String cc;
// get set methods...
}

所以我想将listAA映射到C内部的listCC。C有B作为 parent 。

我尝试将其描述为数据结构:

a.listAA -> b.c.listCC 

到目前为止我已经尝试过:

<mappings>
<mapping>
<class-a>mypackages.A</class-a>
<class-b>mypackages.B</class-b>
<field>
<a>listAA</a>
<b>objectC.listCC</b>
<b-hint>mypackages.CC</b-hint>
<field>
</mapping>

<mapping>
<class-a>mypackages.AA</class-a>
<class-b>mypackages.CC</class-b>
<field>
<a>aa</a>
<b>cc</b>
<field>
</mapping>
</mappings>

我认为推土机不知道

objectC.listCC

作为对象中的列表。相反,尝试查找名为“objectC.listCC”的属性。

它抛出

 NullPointerException
at org.dozer.util.ReflectionsUtils.invoke(ReflectionsUtils)
...

有谁知道如何解决这个问题吗?

问候

伊万

PS:我希望我描述清楚

最佳答案

有时,您必须走出去,忘记寻找答案,然后带着新鲜的头脑再次回来。我将映射配置扩展为三个部分。因为推土机无法将对象映射到孙对象。所以你必须像链映射一样:

 <mappings>
<mapping>
<class-a>mypackages.A</class-a>
<class-b>mypackages.B</class-b>
<field map-id="listAAToObjectC">
<a>listAA</a>
<b>objectC</b>
<b-hint>mypackages.C</b-hint>
<field>
</mapping>
<mapping map-id="listAAToObjectC">
<class-a>mypackages.A</class-a>
<class-b>mypackages.C</class-b>
<field map-id="listToList">
<a>listAA/a>
<b>listCC</b>
<field>
</mapping>
<mapping map-id="listToList">
<class-a>mypackages.AA</class-a>
<class-b>mypackages.CC</class-b>
<field>
<a>aa</a>
<b>cc</b>
<field>
</mapping>
</mappings>

关于java - Dozer 将对象映射到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49862395/

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