小编典典

Spring Data JPA如何使用Kotlin空值而不是Optional

spring-boot

我正在使用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

阅读 535

收藏
2020-05-30

共1个答案

小编典典

从Spring Data Lovelace SR4 / Spring Boot
2.1.2开始,CrudRepository.findByIdOrNull(id: ID): T? = findById(id).orElse(null)Kotlin扩展现在提供了一种开箱即用的方法来检索Spring Data中的可为空的实体。

如果出于性能原因,您希望避免使用Optional<T>包装器,请注意,还可以使用findFooById(id: ID): T?函数创建自定义接口。查询执行是特定于存储的,但大多数都使用内部可为空的值,这将避免Optional<T>包装程序的开销。请注意,对于大多数用例而言,此开销可以忽略不计,因此建议使用内置扩展。

有关更多详细信息,请参见DATACMNS-1346

2020-05-30