Spring Data JPA如何使用Kotlin空值而不是Optional
我正在使用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
回答:
从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。
以上是 Spring Data JPA如何使用Kotlin空值而不是Optional 的全部内容, 来源链接: utcz.com/qa/412382.html