Intereting Posts

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 

Solutions Collecting From Web of "Spring Data JPA Как использовать ноль Kotlin вместо необязательного"

Вы должны использовать интерфейс 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)