首页 > 解决方案 > ModelMapper - 尝试跳过目标映射时的 NPE?

问题描述

一个非常简单的问题,它在我的案例中产生了漏洞。每次转换 User --> UserDTO 时,我都会尝试跳过 userDTO 的 setPassword。

我在 ModelMapper 的这一行得到 NullPointerException -

我知道“源”映射不存在,但我的问题是为什么它甚至关心它,因为我要求它根本不设置密码。

抱歉,我认为我在 ModelMapper 方面缺乏一些基础知识。感谢您的时间和帮助。

从ModelMapper获得帮助,跳过一个字段和其他几个链接,但没有运气。

在此处输入图像描述

下面是代码

@Bean
public ModelMapper modelMapper() {
    ModelMapper mm = new ModelMapper();
    mm.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
    TypeMap<User, UserDTO> userEntityToDTOMap = mm.createTypeMap(User.class, UserDTO.class);
    userEntityToDTOMap.addMappings(a -> a.skip(UserDTO::setPassword));

    return mm;
}

public static void main(String[] args) {
    BootstrapConfigurationManager mgr = new BootstrapConfigurationManager();
    ModelMapper mm = mgr.modelMapper();
    mm.getConfiguration().setPropertyCondition(Conditions.isNotNull());

    User user = new User();
    user.setId(44L);
    user.setPassword("password");

    UserDTO userDTO = new UserDTO();
    userDTO.setEmailAddress("abc@abc.com");

    mm.map(user, userDTO);

    System.out.println(userDTO.getId());
    System.out.println(userDTO.getEmailAddress());
    System.out.println(userDTO.getPassword());
}

标签: modelmapper

解决方案


啊!!!这是 v 1.1.0 中的一个错误。我刚刚将它升级到 2.3.2,我不再获得 NPE。在发布这个问题之前,我应该考虑升级版本。


推荐阅读