Dozer: исключение приведения класса при отображении списков - PullRequest
0 голосов
/ 26 января 2011

У меня есть два объекта-значения (ValueObjectA и ValueObjectB), каждый с именем1 и именем2

Затем у меня есть два списка, каждый из которых содержит один из объектов-значений, которые я планирую отобразить с помощью dozer.

Как только я получаю доступ к сопоставленному списку listOfB, я получаю исключение Class Cast, поскольку 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 ]

1 голос
/ 26 января 2011

Не легко.

Взгляните на эту тему на форуме Dozer.

Цитировать:

"Вложенные коллекцииобрабатываются автоматически, но вы правы в том, что коллекции верхнего уровня необходимо повторять. В настоящее время нет более элегантного способа справиться с этим. "

0 голосов
/ 22 мая 2012

Попробуйте определить отображение для обоих классов.Dozer будет автоматически использовать это отображение во время выполнения и соответственно преобразовывать объекты.

, например (псевдокод):

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

Полагаю, имена полей в обоих классах совпадают.Если нет, вам нужно указать их в приведенном выше отображении.

...