J'utilise Spring 5 dans mon projet. Jusqu'à aujourd'hui, il y avait une méthode disponible CrudRepository#findOne
.
Mais après avoir téléchargé le dernier instantané, il a soudainement disparu! Y a-t-il une référence que la méthode n'est pas disponible maintenant?
Ma liste de dépendances:
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'
}
METTRE À JOUR:
Il semble que cette méthode a été remplacée par CrudRepository#findById
java
spring
spring-boot
spring-data
spring-data-jpa
Andrii Abramov
la source
la source
Notez que ce
findById
n'est pas un remplacement exact pourfindOne
, il renvoie unOptional
au lieu denull
.N'étant pas très familier avec les nouvelles choses Java, il m'a fallu un peu de temps pour comprendre, mais cela transforme le
findById
comportement enfindOne
un:la source
Optional
a été ajouté pour nettoyer le code de toutes lesnull
vérifications. Changez simplement le type de retour de votre méthode et utilisez-laOptional
comme un bon boy-scout devraitNous avons eu plusieurs centaines d'utilisations de l'ancienne
findOne()
méthode. Plutôt que de nous lancer dans un refactor gigantesque, nous avons fini par créer l'interface intermédiaire suivante et avons demandé à nos référentiels de l'étendre au lieu de l'étendreJpaRepository
directementla source
return findById(id).orElse(null);
suffitUne transformation pragmatique
Ancienne façon:
Nouvelle façon:
la source