一个非常简单的问题,在我的案子中冒出了黑洞。每当我转换User-> UserDTO时,我都试图跳过userDTO的setPassword。
在ModelMapper的这一行,我得到NullPointerException-
我知道不存在“源”映射,但是我的问题是为什么它甚至关心它,因为我要求它根本不设置密码。
对不起,我认为我在ModelMapper方面缺少一些基础知识。谢谢您的时间和帮助。
从ModelMapper skip a field和其他一些链接获得了帮助,但没有运气。
下面是代码
@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());
}
答案 0 :(得分:0)
啊!这是1.1.0版中的错误。我刚刚将其升级到2.3.2,而不再获得NPE。在发布此问题之前,我应该考虑过升级版本。