【发布时间】:2021-12-07 16:17:54
【问题描述】:
当我将返回值从 User 更改为 Optional 时,我的 UserResponseDTO 返回 null,当我将 Optional 更改为 User 时它可以正常工作,如何解决?数据库保存了我在 postman 中输入的所有值
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服务保存方法
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);
}
用户控制器保存方法
@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);
}
【问题讨论】:
-
尝试使用 Optional.of() 而不是 Optional.ofNullable() stackoverflow.com/questions/31696485/…
-
User user = userService.save(userUntilSave).orElseThrow(SomeException::new);怎么样?没点映射Optional。
标签: java spring database controller modelmapper