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 5中如何自动连接SessionFactory?
- Spring不能处理返回通用内部Kotlin类的方法
- 使用Spring MVC和Boot刷新静态内容
- ReactiveCrudRespository永远不会从SaveAll返回
- 春季启动不等待请求
- 尝试在Kotlin和Spring引导下使用JPA时出现BeanDefinitionParsingException
- Spring Boot无法在IntelliJ中运行单个测试
- Kotlin spring-boot @ConfigurationProperties
- Hibernate @OneToMany连接表抛出StackOverflowException