Spring Data JPA Cómo utilizar Kotlin nulls en lugar de Opcional

Estoy escribiendo una aplicación Spring Boot con Spring Data JPA y Kotlin, y he notado que en CrudRepository existe el siguiente método:

 Optional<T> findById(ID id); 

Sin embargo, estoy usando Kotlin, que tiene forms mucho más fluidas de manejar nulos que Optional . ¿Alguien sabe cómo convertiría ese método para trabajar así?

 fun findById(id: ID): T? 

Cuando extiendo Repository y creo un repository con esa firma, obtengo el error:

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

    Tienes que usar la interfaz JpaRepository :

    Crea un repository

     interface FruitRepository : JpaRepository<Fruit, Long> { } 

    Utilizar:

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

    Supongamos que quiere usar el CrudRepository con la function findById todos modos, entonces puede crear su propia function de extensión de esta manera:

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

    y úsalo así:

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