java - springframework - Spring Data JPA findOne() cambia a Opcional, ¿cómo usar esto?




spring data like (3)

Api Optional proporciona métodos para obtener los valores. Puede verificar la presencia del valor en isPresent() y luego realizar una llamada para get() o puede realizar una llamada para get() encadenada con orElse() y proporcionar un valor predeterminado.

Lo último que puedes hacer es usar @Query() sobre un método personalizado.

https://code.i-harness.com

Estoy aprendiendo SpringBoot2.0 con Java8 .

Y seguí algunos ejemplos de tutoriales para hacer blogs.

El código fuente del tutorial es:

@GetMapping("/{id}/edit")
public String edit(@PathVariable Long id, Model model) {
  model.addAttribute("categoryDto", categoryService.findOne(id));
  return "category/edit";
}

Pero este código está lanzando este error:

categoryService.findOne (id)

Estoy pensando en cambiar el findOne() JPA findOne() a Optional< S >

¿Cómo resolver eso?

Más información:

Este es el método categoryService:

public Category findOne(Long id) {
  return categoryRepository.findOne(id);
}

De hecho, en la última versión de Spring Data, findOne devuelve un opcional. Si desea recuperar el objeto de la Opcional, simplemente puede usar get () en la Opcional. Sin embargo, en primer lugar, un repositorio debe devolver el opcional a un servicio, que luego maneja el caso en el que el opcional está vacío. después, el servicio debe devolver el objeto al controlador.


El método ha sido renombrado a findById(…) devolviendo un Optional para que usted tenga que manejar la ausencia usted mismo:

Optional<Foo> result = repository.findById(…);

result.ifPresent(it -> …); // do something with the value if present
result.map(it -> …); // map the value if present
Foo foo = result.orElse(null); // if you want to continue just like before




spring-data-jpa