gpt4 book ai didi

java - 如何使用 JPA 检查记录是否存在

转载 作者:IT老高 更新时间:2023-10-28 21:17:49 26 4
gpt4 key购买 nike

我想知道给定记录是否存在于数据库中。到目前为止,我已经通过编写 JPA 查询并通过 getSingleResult() 方法运行它来实现这一点。如果具有给定参数的记录不存在,这将抛出 NoResultException。当然,记录不是必须存在的,所以有时这是正常行为,这就是为什么我问自己,是否有必要抛出一个我必须通过catch block 处理的异常?据我所知异常处理的成本是相当大的,所以我对这个解决方案不是很满意,而且我什至不需要对象,我只需要知道它在数据库中的存在。

有没有更好的方法来检查一个对象是否存在?例如。使用 getResultList() 并检查它的大小可能吗?

最佳答案

如果您只想知道对象是否存在,请将 SELECT COUNT 发送到您的数据库。这将返回 0 或 1。

异常处理的成本并没有那么大(除非您在正常操作期间这样做数百万次),所以我不会打扰。

但代码并不能真正反射(reflect)您的意图。由于 getSingleResult() 在内部调用 getResultList() ,这样就更清楚了:

public boolean objExists(...) {
return getResultList(...).size() == 1;
}

如果您通过对象 id 进行查询并且启用了缓存,如果对象已经加载,那么这将成为在缓存中的简单查找。

关于java - 如何使用 JPA 检查记录是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4374730/

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