Dozer が をマップするときSet
、 を使用しorg.dozer.util.CollectionUtils.createNewSet
て宛先Set
インスタンスを作成します。HashSet
またはのいずれかを取得しますTreeSet
。
要素の順序が自然な順序と同じである場合はSortedSet
、宛先で a を使用できます。そうでない場合は、宛先オブジェクトを自分で作成し、目的の実装を提供する必要がありますSet
。
Dozer では、カスタム作成メソッドまたはカスタムBean ファクトリを使用して、デフォルト コンストラクターを使用する以上にオブジェクトをインスタンス化できるため、いずれかの方法を使用できます。
メソッドの作成
Java コード:
public class MyInstanceCreator {
public static DestinationObject createDestinationObject() {
DestinationObject result = new DestinationObject();
result.setCountries(new LinkedHashSet<Country>());
return result;
}
private MyInstanceCreator() { }
}
マッピング:
<mapping>
<class-a create-method="MyInstanceCreator.createDestinationObject">DestinationObject</class-a>
<class-b>SourceObject</class-b>
<field>
<a>countries</a>
<b>countries</b>
</field>
</mapping>
豆工場
Java コード:
public class MyBeanFactory implements BeanFactory {
public Object createBean(Object source, Class<?> sourceClass, String targetBeanId) {
DestinationObject result = new DestinationObject();
result.setCountries(new LinkedHashSet<Country>());
return result;
}
}
マッピング:
<mapping>
<class-a bean-factory="MyBeanFactory">DestinationObject</class-a>
<class-b>SourceObject</class-b>
<field>
<a>countries</a>
<b>countries</b>
</field>
</mapping>