作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
为了编写所需的最少代码量,我试图让 ModelMapper 生成其隐式映射,并且只为那些它无法自动映射的属性编写显式属性映射。
如果我让 ModelMapper 使用以下方法生成隐式映射:
modelMapper.createTypeMap(SourceType.class, DestType.class);
它提示 setSomeId
有多个可能的映射。然后我尝试使用以下方法修复它:
modelMapper.addMappings(new PropertyMap<SourceType, DestType>() {
protected void configure() {
map().setSomeId(source.getProperty().getWeirdID());
}
});
但是,我发现ModelMapper 仍然报错,因为实际上在createTypeMap
上抛出了一个异常,所以它没有机会到达我的自定义映射代码。
如果我颠倒这两个语句,我会得到一个错误:
java.lang.IllegalStateException: A TypeMap already exists for class SourceType and class DestType
如果我完全省略 createTypeMap
,ModelMapper 会提示缺少 DestType
的所有其他属性的映射(那些它能够使用 createTypeMap 自动映射的属性
)。
我在文档中没有发现明确的线索是否支持混合隐式映射和显式映射以及它是如何完成的。
有人能帮忙吗?
最佳答案
代替 ModelMapper.createTypeMap
尝试 ModelMapper.addMappings
(首先)。这仍然会创建(并返回)一个 TypeMap
,但在这样做时会考虑您的 PropertyMap
。
关于java - ModelMapper:混合隐式和显式映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563458/
我是一名优秀的程序员,十分优秀!