update framework data crudrepository java spring spring-boot spring-data spring-data-jpa

java - framework - Falta el método CrudRepository#findOne



spring data repository save (4)

Consulte DATACMNS-944 que está asociado a esta confirmación que tiene los siguientes cambios de nombre

╔═════════════════════╦═══════════════════════╗ ║ Old name ║ New name ║ ╠═════════════════════╬═══════════════════════╣ ║ findOne(…) ║ findById(…) ║ ╠═════════════════════╬═══════════════════════╣ ║ save(Iterable) ║ saveAll(Iterable) ║ ╠═════════════════════╬═══════════════════════╣ ║ findAll(Iterable) ║ findAllById(…) ║ ╠═════════════════════╬═══════════════════════╣ ║ delete(ID) ║ deleteById(ID) ║ ╠═════════════════════╬═══════════════════════╣ ║ delete(Iterable) ║ deleteAll(Iterable) ║ ╠═════════════════════╬═══════════════════════╣ ║ exists() ║ existsById(…) ║ ╚═════════════════════╩═══════════════════════╝

Estoy usando Spring 5 en mi proyecto. Hasta hoy había un método disponible CrudRepository#findOne .

Pero después de descargar la última instantánea, ¡de repente desapareció! ¿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-validation'' compile ''org.springframework.boot:spring-boot-starter-web'' compile ''org.springframework.boot:spring-boot-starter-data-jpa'' runtime ''org.springframework.boot:spring-boot-devtools'' runtime ''com.h2database:h2:1.4.194'' compile ''org.projectlombok:lombok:1.16.14'' compile ''org.modelmapper:modelmapper:0.7.5'' testCompile ''org.springframework.boot:spring-boot-starter-test'' testCompile ''org.codehaus.groovy:groovy-all:2.4.10'' testCompile ''cglib:cglib:3.2.5'' testCompile ''org.spockframework:spock-core:1.0-groovy-2.4'' }

ACTUALIZAR:

Parece que este método ha sido reemplazado con CrudRepository#findById


Tenga en cuenta que findById no es un reemplazo exacto para findOne , devuelve un Optional lugar de null .

Al no estar muy familiarizado con las nuevas cosas de Java, me tomó un tiempo descubrirlo, pero esto convierte el comportamiento findById en findOne one:

return rep.findById(id).orElse(null);


Tuvimos muchos cientos de usos del antiguo método findOne() . En lugar de embarcarnos en un gigantesco refactor, terminamos creando la siguiente interfaz intermedia e hicimos que nuestros repositorios la extendieran en lugar de extender JpaRepository directamente

@NoRepositoryBean public interface BaseJpaRepository<T, ID> extends JpaRepository<T, ID> { default T findOne(ID id) { return (T) findById(id).orElse(null); } }


Una transformación pragmática.

Vieja forma:

Entity aThing = repository.findOne(1L);

Nueva manera:

Optional<Entity> aThing = repository.findById(1L);