Необязательный тип присваивается во время выполнения

#java #spring-boot #spring-mvc

#java #весенняя загрузка #spring-mvc

Вопрос:

Я следую руководству по SpringBoot framework. Netbeans показывает ошибку для приведенного ниже кода. Ошибка incompatible type:Optional<UsersDTO> cannot be converted to UserDTO

 @GetMapping("/{id}")
public ResponseEntity<UsersDTO>getUserById(@PathVariable("id") final Long id){
    UsersDTO user = userJpaRepository.findById(id);
    return new ResponseEntity<UsersDTO>(user,HttpStatus.OK);
}  
  

Комментарии:

1. В чем ваш вопрос? Вы хотите знать, что это Optional такое? Или почему java проверяет типы в операторе присваивания?

Ответ №1:

JPA Repository findById возвращает необязательный, так как элемент может быть не найден.

Поэтому этот код не компилируется, потому что возвращаемый тип неверен и не соответствует findById

Вам нужно иметь правильный тип, который является необязательным, например:

  Optional<UsersDTO> user = userJpaRepository.findById(id);
  

Получив этот элемент, вы можете проверить user.isPresent() и user.get(), чтобы получить объект UsersDTO, если он присутствует.