Отсутствует метод crudRepository # findOne

Я использую Spring 5 в своем проекте. До сегодняшнего дня был доступен метод CrudRepository#findOne.

Но после загрузки последнего снимка он внезапно исчез! Есть ли какая-либо ссылка, что метод сейчас недоступен?

Мой список зависимостей:

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

ОБНОВИТЬ:

Кажется, этот метод был заменен на CrudRepository#findById

Ответ 1

Пожалуйста, смотрите DATACMNS-944, который связан с этим коммитом, который имеет следующие переименования

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

Ответ 2

Обратите внимание, что findById не является точной заменой findOne, он возвращает Optional вместо null.

Будучи не очень знакомым с новыми Java-вещами, мне потребовалось немного времени, чтобы разобраться, но это превращает поведение findById в findOne:

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

Ответ 3

У нас было много сотен использований старого findOne(). Вместо того чтобы приступить к гигантскому рефакторингу, мы в итоге создали следующий промежуточный интерфейс, и наши репозитории расширили его вместо JpaRepository расширения JpaRepository

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

Ответ 4

Прагматическое преобразование

Старый способ:

Entity aThing = repository.findOne(1L);

Новый способ:

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

Ответ 5

public Topic getTopic (String id) {
вернуть topicResp.findById(id).orElse(null); }

Это работает для меня.

Ответ 6

findOne() - это старый метод, он обновляется функцией findById();

Ранее мы использовали:

Customer customer = customerRepository.findOne(id);

В настоящее время мы используем это:

Customer customer = customerRepository.findById(id).orElse(null);

это решит вашу проблему.