Dozer:映射列表时的类转换异常

时间:2011-01-26 09:15:28

标签: java mapping dozer

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

然后我有两个列表,每个列表都包含一个值对象,我计划用推土机映射。

一旦我访问映射的'listOfB',我就会得到一个Class Cast Exception,因为dozer将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 ){
...

2 个答案:

答案 0 :(得分:1)

不容易。

在Dozer论坛上查看this thread

引用:

  

“处理嵌套集合   自动,但你是对的   顶级收藏品需要   迭代过来。目前还没有   更优雅的方式来处理这个。“

答案 1 :(得分:0)

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

例如

(psudo代码):

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

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