【发布时间】:2020-07-15 08:01:29
【问题描述】:
只有当传入的用户对象在数据库中不存在时,我才会尝试持久化用户。 该服务通过调用用户存储库中的 findByEmail 方法返回一个 Optional。 在我的情况下,数据库中已经存在一个确切的用户并且对象被正确返回。
但是,在我的控制器中,当我执行 Optional.map(user).orElse(persistuser) 时,会执行 orElse 部分。
我的理解是,当 Optional.map 返回一个 Optional 并且用户在场时,orElse 应该返回用户,而不是执行persistuser操作。
请帮我解决这个问题。
控制器:
@PostMapping(path = "/addUser", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Response> addUser(@RequestBody User user){
user = userService.checkIfUserExsits(user.getEmail())
.map(usr -> usr)
.orElse(userService.persistUser(user));
return respHelpers.prepareSuccessResponse(user,"Processed");
}
服务:
public Optional<User> checkIfUserExsits(String email){
Optional<User> user = Optional.ofNullable(userRepo.findByEmail(email));
return user;
}
存储库:
@Repository
public interface UserRepo extends JpaRepository<User, UUID> {
public User findByEmail(String email);
}
【问题讨论】:
标签: spring-boot java-8 optional