0

2つの値オブジェクト(ValueObjectAとValueObjectB)があり、それぞれにname1とname2があります。

次に、2つのリストがあり、それぞれが値オブジェクトの1つを保持しており、ドーザーでマップする予定です。

マップされた'listOfB'にアクセスするとすぐに、クラスキャスト例外が発生します。これは、ドーザーがValueObjectAタイプのオブジェクトをValueObjectsBのリストにマップするためです。

リストを反復せずにこれら2つのリストをマップし、オブジェクトごとにマップすることは可能ですか?

サンプルコード:

...    
// 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

簡単ではありません。

Dozerフォーラムでこのスレッドをご覧ください。

引用するには:

「ネストされたコレクションは自動的に処理されますが、トップレベルのコレクションを繰り返す必要があるのは正しいです。現在、これを処理するためのより洗練された方法はありません。」

于 2011-01-26T09:51:13.070 に答える
0

両方のクラスのマッピングを定義してみてください。Dozerは実行時にこのマッピングを自動的に使用し、それに応じてオブジェクトを変換します。

例(疑似コード):

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

両方のクラスのフィールド名は同じだと思います。そうでない場合は、上記のマッピングでそれらを指定する必要があります。

于 2012-05-22T05:50:49.650 に答える