Spring Data JPA Как использовать ноль Kotlin вместо необязательного

Я пишу приложение Spring Boot с Spring Data JPA и Kotlin, и я заметил, что в CrudRepository существует следующий метод:

 Optional<T> findById(ID id); 

Тем не менее, я использую Kotlin, который имеет гораздо более плавные способы работы с нулями, чем Optional . Кто-нибудь знает, как я буду конвертировать этот метод, чтобы работать так?

 fun findById(id: ID): T? 

Когда я расширяю Repository и создаю репо с этой сигнатурой, я получаю ошибку:

 java.lang.ClassCastException: java.util.Optional cannot be cast to com.books.Book 

Вы должны использовать интерфейс JpaRepository :

Создать репозиторий:

 interface FruitRepository : JpaRepository<Fruit, Long> { } 

Использование:

 val fruit: Fruit? = fruitRepository.getOne(id) 

Предположим, вы все CrudRepository хотите использовать CrudRepository с функцией findById , тогда вы можете создать свою собственную функцию расширения следующим образом:

 fun <T> CrudRepository<T, Long>.findOne(id: Long): T? { val o = findById(id) return if(o.isPresent) o.get() else null } 

и используйте его так:

 val fruit: Fruit? = fruitRepository.findOne(id) 
Intereting Posts
Ссылка на представления с одним и тем же идентификатором в разных макетах с расширением android kotlin Двоичная конвертация Int в Float в Котлин Как установить прокси для Spring AsyncRestTemplate с помощью Netty4ClientHttpRequestFactory? Какой тип языка Котлин? Чистый ООП или функциональный Котлин: Передача оператора в качестве параметра функции Файл открытого актива Android Kotlin Как создать .jar (Создать исполняемый файл) встроенного сервера Ktor В Котлине ошибка Джексона по десериализации с классом данных Пытается создать простой recyclerView в Kotlin, но адаптер не применяется должным образом Гессон Deserialization с Kotlin, блок инициализатора не называется Создать общий класс с массивом типа Comparable <T> в kotlin? Сохранить сторонний объект в ORM Kotlin 1.0.0-rc-1036 проблемы с обработкой аннотации Можно ли сопоставить функцию более высокого порядка в котлине с строкой Kotlin: Что такое файл kjsm?