java - ModelMapper:混合隐式和显式映射?

标签 java modelmapper

为了编写所需的最少代码量,我试图让 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/

相关文章:

java - 如何使用 modelmapper 将多个字段映射到一个目标字段

java - ModelMapper:使用带有自定义映射的 TypeMap 时,如何使转换器在映射器级别注册

java - 在托管 bean 中使用 ModelMapper 库的自定义映射会导致 NullPointerException

java - 当未给出对象时,如何从另一个类调用 getter?

java - 我需要提取字符串的前两个标记,而不管它们之间有多少空格

java - 为什么在使用 Facebook 登录按钮调用 CallbackManager 上的 onActivityResult() 后完全没有任何反应?

java - 如何从 Modelmapper 中排除整个属性(如果它们为空)

java - 如何在不使用 actionListener 的情况下更新组件?

java - 如何从消息中获取表情符号?

java - ModelMapper 与 Jooq Record 集成