W moim projekcie używam Spring 5. Do dziś była dostępna metoda CrudRepository#findOne
.
Ale po pobraniu najnowszej migawki nagle zniknął! Czy jest jakaś wzmianka, że metoda nie jest obecnie dostępna?
Moja lista zależności:
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'
}
AKTUALIZACJA:
Wygląda na to, że ta metoda została zastąpiona CrudRepository#findById
java
spring
spring-boot
spring-data
spring-data-jpa
Andrii Abramov
źródło
źródło
Zauważ, że
findById
nie jest to dokładny zamiennik dlafindOne
, zwracaOptional
zamiastnull
.Ponieważ niezbyt dobrze poznałem nowe rzeczy w Javie, zajęło mi trochę czasu, zanim zrozumiałem, ale to zmienia
findById
zachowanie wfindOne
jedno:źródło
Optional
został dodany, aby wyczyścić kod ze wszystkichnull
kontroli. Po prostu zmień typ zwracanej metody i używaj goOptional
tak, jak powinienMieliśmy setki zastosowań starej
findOne()
metody. Zamiast zająć się gigantycznym refaktorem, w końcu utworzyliśmy następujący interfejs pośredni i kazaliśmy naszym repozytoriom rozszerzyć go zamiast rozszerzaćJpaRepository
bezpośrednioźródło
return findById(id).orElse(null);
wystarczyPragmatyczna transformacja
Stara droga:
Nowy sposób:
źródło