Как использовать мое собственное объявление findById вместо того, которое было написано Spring Data? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь обновить версию Spring-boot до 2.1.2, и мы используем данные JPA Spring для операций с БД.

Во многих местах мы используем метод findById(Id), который был изменен на Optional<T> findById(Id).orElse(null), это выдает мне ошибки времени компиляции с моим существующим findById(Id), тип возвращаемого значения которого не Optional<>.

Чтобы преодолеть этот сценарий, я реализовал пользовательский интерфейс, который расширяет BaseJpaRepository, но здесь методимя и аргументы одинаковы как в старой, так и в новой версии Spring Boot.

Я попытался позвонить, как показано ниже

@NoRepositoryBean

public interface CustomBaseJpaRepository<T, ID extends Serializable> extends JpaRepository<T, ID>  {

    default  T findById(ID id) {
        return (T) findById(id).orElse(null);
    }
}

Но он пытается выполнить цикл, и я не уверен, как вызватьCrudRepository.findById(Id) из моего findById(), так что мне нужно сделать очень минимальные изменения.

1 Ответ

0 голосов
/ 08 мая 2019

Я рекомендую переименовать существующий метод в другое имя. Например findByIdNullable. С современной IDE это должно быть легко изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...