当 Dozer 映射 aSet
时,它使用org.dozer.util.CollectionUtils.createNewSet
来创建目标Set
实例。你得到 aHashSet
或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>