简体   繁体   English

modelmapper 制作的 Spring DTO 返回所有内容 null

[英]Spring DTO made by modelmapper returns everything null

When i changed return value from User to Optional my UserResponseDTO returns null, it works properly when i change Optional to User, how to fix it?Database saves all the values i enter in postman当我将返回值从 User 更改为 Optional 时,我的 UserResponseDTO 返回 null,当我将 Optional 更改为 User 时它可以正常工作,如何修复它?数据库保存我在 postman 中输入的所有值

USER dao save method USER dao保存方法

 public Optional<User> saveUser(User user) {
    jdbcTemplate.update("INSERT INTO usr(username,password,email,country,gender) VALUES( ?, ?, ?, ?, ?)", user.getUsername(), user.getPassword()
            ,user.getEmail(),user.getCountry(),user.getGender().getId());
    return Optional.ofNullable(user);
}

USER service save method USER服务保存方法

public Optional<User> save(User user) {
    if(validate(user.getEmail())){
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        user.setRole(Role.USER);
        user.setStatus(Status.ACTIVE);
        Optional<User> userSaved = userDao.saveUser(user);
        return userSaved;
    }
    log.warn("U entered the wrong email");
    return Optional.ofNullable(user);
}

User controller save method用户 controller 保存方法

@ApiOperation(value = "getting the user data from request body and saving it to database")
@PostMapping(value = "")
public ResponseEntity<UserResponse> saveUser(@RequestBody UserRequest userRequest) {
    User userUntilSave = modelMapper.map(userRequest, User.class);
    Optional<User> user = userService.save(userUntilSave);
    UserResponse userResponse = modelMapper.map(user, UserResponse.class);
    return new ResponseEntity<>(userResponse, HttpStatus.CREATED);
}

Postman Screen enter image description here Postman 屏幕在此处输入图像描述

ModelMapper doesn't directly work on optionals, You need to set converters. ModelMapper 不直接作用于可选项,您需要设置转换器。 Take a look at看一眼

ModelMapper handling java 8 Optional<MyObjectDto> fields to Optional<MyObject> ModelMapper 处理 java 8 Optional<MyObjectDto> 字段到 Optional<MyObject>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM