Estoy usando Spring 5 en mi proyecto. Hasta hoy había método disponible CrudRepository#findOne
.
Pero después de descargar la última instantánea, ¡desapareció de repente! ¿Hay alguna referencia de que el método no está disponible ahora?
Mi lista de dependencias:
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
runtime 'com.h2database:h2:1.4.194'
}
ACTUALIZAR:
Parece que este método ha sido reemplazado por CrudRepository#findById
java
spring
spring-boot
spring-data
spring-data-jpa
Andrii Abramov
fuente
fuente
Tenga en cuenta que
findById
no es un reemplazo exacto defindOne
, devuelve un enOptional
lugar denull
.Al no estar muy familiarizado con las nuevas cosas de Java, me tomó un poco de tiempo darme cuenta, pero esto convierte el
findById
comportamiento enfindOne
uno:fuente
Optional
se agregó para limpiar el código de todos losnull
controles. Sólo cambia el tipo de retorno del método y que su usoOptional
como un buen chico-Scout debeTuvimos muchos cientos de usos del
findOne()
método antiguo . En lugar de embarcarnos en una refactorización gigantesca, terminamos creando la siguiente interfaz intermedia e hicimos que nuestros repositorios la extendieran en lugar de extenderlaJpaRepository
directamentefuente
return findById(id).orElse(null);
suficienteUna transformación pragmática
Vieja forma:
Nueva manera:
fuente