#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, если он присутствует.