ModelMapper-尝试跳过目标映射时是NPE吗?

时间:2019-01-28 08:09:53

标签: modelmapper

一个非常简单的问题,在我的案子中冒出了黑洞。每当我转换User-> UserDTO时,我都试图跳过userDTO的setPassword。

在ModelMapper的这一行,我得到NullPointerException-

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

对不起,我认为我在ModelMapper方面缺少一些基础知识。谢谢您的时间和帮助。

ModelMapper skip a field和其他一些链接获得了帮助,但没有运气。

enter image description here

下面是代码

@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());
}

1 个答案:

答案 0 :(得分:0)

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