我有两个单独的对象要映射:
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作为父母。
我尝试将其描述为数据结构:
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
作为Object中的列表。而是试图找到名为'objectC.listCC'的属性。
它抛出
NullPointerException
at org.dozer.util.ReflectionsUtils.invoke(ReflectionsUtils)
...
有没有人知道如何解决这个问题。
此致
伊万
PS:我希望我能清楚地描述它答案 0 :(得分:1)
有时你必须出去忘记寻找答案,然后重新回头。 我将映射配置扩展为三个部分。因为推土机无法将对象映射到大型子对象。所以你必须像链映射一样:
<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>