Falta CrudRepository#findOne método

Estoy utilizando el Muelle 5 en mi proyecto. Hasta el día de hoy no estaba disponible método de CrudRepository#findOne.

Pero después de la descarga instantánea más reciente de repente desapareció! ¿Hay alguna referencia que el método no está disponible ahora?

Mi lista de dependencia:

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'
}

ACTUALIZACIÓN:

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

4 Kommentare

  1. 132

    Consulte DATACMNS-944 que se asocia a este commit que tiene la siguiente cambia el nombre de

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

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

    No están muy familiarizados con las nuevas java cosas me tomó un poco de tiempo para averiguar, pero lo que convierte a este findById comportamiento en la findOne uno:

    return rep.findById(id).orElse(null);
    • No es la mejor idea: el código seguirá funcionando, pero no estamos usando la API como se debe. Optional fue añadido a limpiar el código de todos los null cheques. Sólo cambia el tipo de retorno del método y el uso Optional como un buen boy scout debe
    • Esto sería grande si usted tiene el control de todos los métodos de aguas abajo. Incluso si usted no tiene el control de todo aguas abajo y su proyecto no es una dependencia de algún otro tercero del proyecto, si los métodos de abajo código null (como, crear, si no existe, o hacer algo de lógica si se encuentra), entonces usted tiene que arreglar así.
  3. 27

    Hemos tenido muchos cientos de usos de la antigua findOne() método. En lugar de embarcarse en un mamut refactorizar, terminamos la creación de las siguientes intermediario de la interfaz, y tuvimos nuestra repositorios de extenderlo en lugar de ampliar JpaRepository directamente

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

    Una pragmática transformar

    Antigua:

    Entity aThing = repository.findOne(1L);

    Nueva forma:

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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea