it-swarm.com.de

Fehlende CrudRepository # findOne-Methode

Ich verwende Spring 5 in meinem Projekt. Bis heute war die Methode CrudRepository#findOne verfügbar.

Aber nach dem Herunterladen des neuesten Schnappschusses ist er plötzlich verschwunden! Gibt es einen Hinweis darauf, dass die Methode derzeit nicht verfügbar ist?

Meine Abhängigkeitsliste:

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

UPDATE:

Scheint, dass diese Methode durch CrudRepository#findById Ersetzt wurde

81
Andrii Abramov

Lesen Sie bitte DATACMNS-944 , das diesem Commit zugeordnet ist, das die folgenden Umbenennungen hat

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

Beachten Sie, dass findById kein exakter Ersatz für findOne ist, sondern ein Optional anstelle von null zurückgibt.

Da ich mit neuen Java) Dingen nicht sehr vertraut war, brauchte ich eine Weile, um das herauszufinden, aber dies verwandelt das findById -Verhalten in das findOne -Verhalten:

return rep.findById(id).orElse(null);
91
Tinus Tate

Wir hatten viele hundert Verwendungen der alten findOne() -Methode. Anstatt einen Mammut-Refaktor in Angriff zu nehmen, haben wir die folgende Zwischenschnittstelle erstellt und von unseren Repositorys erweitern lassen, anstatt JpaRepository direkt zu erweitern

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

Eine pragmatische Transformation

Alter Weg:

Entity aThing = repository.findOne(1L);

Neuer Weg:

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