Вы должны вернуть Reservation
вместо Optional<Reservation>
(я думаю, вы используете Spring Data, см. Метод сохранения).
Если вы хотите создать исключение, если бронь не найдена, используйте:
public Reservation updateReservation(ReservationUpdateRequest request) {
Reservation reservation = reservationRepo.findById(request.getId())
.orElseThrow(() -> new EntityNotFoundException("Reservation not found"));
reservation.setNumberOfBags(request.getNumOfBags());
reservation.setCheckedIn(request.getCheckedIn());
return reservationRepo.save(reservation);
}
Если вы хотите вернуть код ошибки 404, когда он не найден:
public ResponseEntity<Reservation> updateReservation(ReservationUpdateRequest request) {
return reservationRepo.findById(request.getId())
.map(r -> {
r.setNumberOfBags(request.getNumOfBags());
r.setCheckedIn(request.getCheckedIn());
return ResponseEntity.ok().body(reservationRepo.save(r));
}).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
И RequestMapping странный, вы должны использовать PUT с идентификатором в URL вместо тела запроса.
@PutMapping("/reservations/{id}")
public ResponseEntity<Reservation> updateReservation(@PathParam("id") Long id, ReservationUpdateRequest request) {
return reservationRepo.findById(id)
.map(r -> {
r.setNumberOfBags(request.getNumOfBags());
r.setCheckedIn(request.getCheckedIn());
return ResponseEntity.ok().body(reservationRepo.save(r));
}).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}