В приложении весенней загрузки у меня есть конечная точка, которая возвращает ответ HTTP 200 с объектом, если он существует, или ответ HTTP 404, если нет.Используя spring-boot-starter-parent 1.5.7, я делал это следующим образом:
@Autowired private GroceryRepository groceryRepository;
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public ResponseEntity<Object> get(@PathVariable final Integer id) {
final Grocery grocery = groceryRepository.findOne(id);
if (null == grocery) {
return ResponseEntity
.status(HttpStatus.NOT_FOUND)
.body(MessageUtil.parse(MSG_404_GROCERY, id + ""));
}
return ResponseEntity.ok(grocery);
}
GroceryRepository extends JpaRepository<Grocery, Integer>
В spring-boot-starter-parent 2.0.0 findOne()
исчезло из JpaRepository, а findById()
возвращает Optional
.Я немного борюсь за то, чтобы «портировать» приведенный выше код.Следующее не создает, так как оно имеет неожиданный тип возврата:
groceryRepository.findById(id).ifPresent(grocery -> {
return ResponseEntity.ok(grocery);
});
Может кто-нибудь сказать мне, что было бы правильным способом вернуть правильный ответ?
Спасибо за любую помощь!