gpt4 book ai didi

spring - 如何使用 Kotlin 正确查询 Spring JPA 中的实体

转载 作者:行者123 更新时间:2023-12-02 12:22:36 25 4
gpt4 key购买 nike

我正在将我的应用程序迁移到最新的 Spring Data,但我正在努力正确地完成它。

假设我有一个只有一种方法的存储库,以便通过名称额外查询我的实体:

@Repository
interface FooRepository : JpaRepository<Foo, Long> {
fun findByName(name: String): Foo
}

根据文档,在这种情况下 - 如果未找到实体 - EmptyResultDataAccessException将被抛出。

但是,我也希望能够通过 id 查询实体。如果我使用 findById ,结果将是 Optional<Foo> .另一种选择是使用 getOne ,另一方面将导致 EntityNotFoundException如果没有找到。

那么,除了将所有内容移动到 Optional 之外,还有什么办法吗? , 在 Kotlin 中拥有统一的 API?

最佳答案

您应该将问号与您的查询方法的返回类型一起使用作为“等同于”可选:

interface FooRepository : JpaRepository<Foo, Long> {
fun findByName(name: String): Foo?
}

然后您可以将您的方法用于elvis-operator :

val foo = repo.findByName("bar") ?: Foo("bar")
repo.findByName("bar") ?: throw IllegalArgumentException("foo not found")

更多信息:Kotlin’s java.util.Optional API Equivalents

关于spring - 如何使用 Kotlin 正确查询 Spring JPA 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51050269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com