Spring Data JPA如何使用Kotlin空值而不是可选值
我正在用Spring Data JPA和Kotlin编写一个Spring Boot应用程序,我注意到在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
和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)
- Hibernate OneToMany从父节点绑定错误
- 我不能在Springboot-Kotlin中排除MongoAutoConfiguration(MongoSocketOpenException)
- BadCredentialsException:GAE上的Spring引导安全性Oauth2无法获取访问令牌
- Kotlin&Spring Boot @ConfigurationProperties
- IntelliJ社区找不到Web应用程序工件来生成WAR
- ReactiveCrudRespository永远不会从SaveAll返回
- Spring Boot Controller语言环境不随参数更改
- 如何在Spring WebFlux中记录请求和响应主体
- WebFlux功能:如何检测一个空的通量并返回404?