0

我有两个值对象(ValueObjectA 和 ValueObjectB),每个都有 name1 和 name2

然后我有两个列表,每个列表都包含一个值对象,我打算用推土机对其进行映射。

一旦我访问映射的“listOfB”,我就会得到一个类强制异常,因为推土机将 ValueObjectA 类型的对象映射到 ValueObjectsB 列表中。

是否可以在不迭代列表和逐个对象映射的情况下映射这两个列表?

示例代码:

...    
// prepare object A
List<ValueObjectA> lostOfA = new LinkedList();
ValueObjectA voA = new ValueObjectA();
voA.setName1("foo");
voA.setName2("bar");
lostOfA.add(voA);

// map object A to object B 
List<ValueObjectB> listOfB = new LinkedList();
mapper.map(lostOfA, listOfB);

for (ValueObjectB voB:listOfB ){
...
4

2 回答 2

1

不容易。

看看推土机论坛上的这个线程。

去引用:

“嵌套集合是自动处理的,但你说得对,顶层集合需要迭代。目前没有更优雅的方法来处理这个问题。”

于 2011-01-26T09:51:13.070 回答
0

尝试为这两个类定义一个映射。Dozer 将在运行时自动使用此映射并相应地转换对象。

例如(伪代码):

<mapping>
  <classA>ValueObjectA</classA> 
  <classB>ValueObjectB</classB> 
<mapping>

我猜这两个类中的字段名称是相同的。如果不是,您需要在上面的映射中指定它们。

于 2012-05-22T05:50:49.650 回答