내배캠

개인과제 트러블슈팅 - 일정 관리 앱 Develop

muerha 2024. 11. 29. 11:22

 

 

 

일정 관리 앱을 다시 만들어보는 과제를 수행하던 도중,

public UserResponseDto findUserById(Long id) {

        User findUser = userRepository.findById(id);
        return new UserResponseDto(findUser.getEmail(), findUser.getUsername());

    }

 

incompatible types: Optional<User> cannot be converted to User
        User findUser = userRepository.findById(id); 에러가 발생했다.

 

userRepository.findById(id)는 Optional<User>를 반환하기 때문에 직접 User 타입 변수에 할당할 수 없었다.

 

public UserResponseDto findUserById(Long id) {
 
        
        Optional<User> optionalUser = userRepository.findById(id); 
 
        if(optionalUser.isEmpty()){ 
            throw new ResponseStatusException(HttpStatus.NOT_FOUND, "ID가 존재하지 않습니다."); 
        } 
 
        User findUser = optionalUser.get(); 
 
        return new UserResponseDto(findUser.getEmail(), findUser.getUsername()); 
 
    }

 

Optional<User>는 값이 존재할 수도 있고 존재하지 않을 수도 있는 객체이기 때문에  isEmpty()로 값이 없을 경우를 처리하고 값이 있을 때만 get()을 호출하여 값을 추출해주었다.