【发布时间】:2016-04-04 20:09:24
【问题描述】:
我有一个类,我们称它为带有 Map 字段的 A,它转换为 B 类,用于数据库存储/检索,其中该字段映射到字符串。当从 A 到 B 完美时,映射工作。但是,当从 B 到 A 时,我得到一个 IllegalArgument 异常,它表示它不能将字符串转换为映射。让我感到困惑,因为Dozer's documentation 说这在它所说的地方确实有效:
数据类型转换由 Dozer 映射引擎自动执行。目前,Dozer 支持以下几种类型的转换:(这些都是双向的)
然后它继续列出 String to Map 作为可能的事情之一。
我在这里缺少什么,或者我需要做些什么特别的事情?我的文件如下所示:
public class ClassA {
Map<String, String> field;
public Map<String, String> getField() {
return field;
}
public void setField(
Map<String, String> field) {
this.field = field;
}
}
public class ClassB {
String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}
<mapping>
<class-a>com.fake.company.name.ClassA</class-a>
<class-b>com.fake.company.name.ClassB</class-b>
</mapping>
【问题讨论】:
-
非常有趣。可能他们的意思是“地图到地图”,因为我在那个列表中看不到这样的东西,这绝对是可能的。
-
我提出了一个问题 - github.com/DozerMapper/dozer/issues/283。显然映射至少不是自动的。
-
@ShireResident 不确定这是否值得作为 Marti 指出的问题,解决方案是简单地显式声明该字段。