【发布时间】:2017-02-02 05:08:20
【问题描述】:
我正在尝试使用推土机映射将一个哈希集从 PO 对象映射到模型对象中的列表。
这是我的源类和目标类:-
public class Source implements Serializable {
Set<NoteVariableDefinitionPOImpl> noteVariableDefinitionPO = new HashSet<NoteVariableDefinitionPOImpl>();
}
public class Destination implements Serializable {
List<NoteVariableDefinition> noteVariableDefinition = new ArrayList<NoteVariableDefinition)();
NoteVariableDefinitionPOImpl 类:
class NoteVariableDefinitionPOImpl {
int x; // setter + getter
}
NoteVariableDefinition 类:
class NoteVariableDefinition {
int y ;
// setter + getter
}
我的推土机映射配置是:
<mapping wildcard="false" map-id="NC.Source.Destination" map-null="false">
<class-a>test.Source</class-a>
<class-b>test.Destination</class-b>
<field map-id="NC.NoteVariableDefinitionPOImpl.NoteVariableDefinition">
<a>noteVariableDefinitionPO</a>
<b>noteVariableDefinition</b>
<a-hint>java.util.HashSet</a-hint>
<b-hint>java.util.ArrayList</b-hint>
</field>
</mapping>
<mapping wildcard="false"
map-id="NC.NoteVariableDefinitionPO.NoteVariableDefinition" type="one-way" map-null="false">
<class-a>com.test.po.impl.NoteVariableDefinitionPOImpl</class-a>
<class-b>com.test.model.NoteVariableDefinition</class-b>
<field>
<a>x</a>
<b>y</b>
</field>
</mapping>
每当我运行此映射时,我总是会收到以下错误:
MapId: NC.NoteVariableDefinitionPO.NoteVariableDefinition
Type: null
Source parent class: test.Source
Source field name: noteVariableDefinitionPO
Source field type: class java.util.HashSet
Source field value: [com.test.po.impl.NoteVariableDefinitionPOImpl@e21649a8]
Dest parent class: test.Destination
Dest field name: noteVariableDefinition
Dest field type: java.util.List
org.dozer.MappingException: Class mapping not found by map-id: SRC-CLASS- com.test.po.impl.NoteVariableDefinitionPOImpl DST-CLASS-java.util.ArrayList MAP-ID->NC.NoteVariableDefinitionPO.NoteVariableDefinition
在这种情况下,如何将 HashSet 映射到 ArrayList?
我是推土机映射的新手,因此也无法定义自定义转换器。
Dozer 文档说它可以将 Set 转换为 List
Dozer 自动在集合类型之间映射并自动执行任何类型转换。
Dozer 会自动处理以下集合映射:(这些都是 >>all 双向的):
设置为列表
【问题讨论】: