gpt4 book ai didi

javax.persistence.NoResultException : No entity found for query

转载 作者:IT老高 更新时间:2023-10-28 20:39:32 25 4
gpt4 key购买 nike

在我发布这个问题之前,我已经看过 this ,但我找不到我要找的东西。

我知道我写的查询可能只存在一行或根本不存在。所以,我没有理由使用 getResultList()

这是我的代码:

String hql="from DrawUnusedBalance where unusedBalanceDate= :today";
Query query=em.createQuery(hql);
query.setParameter("today",new LocalDate());

DrawUnusedBalance drawUnusedBalance=
(DrawUnusedBalance)query.getSingleResult();// we can have only a
// single datum per day
//`System.out.println(drawUnusedBalance.toString());`

问题是,如果没有行,它会抛出异常,如果没有,它可以正常工作。我知道这个问题,但我也在寻找最好的解决方案。

我想要的是,如果数据库中没有行,我想获取一个空对象(而不是获取异常),所以我将插入一个新数据,如果它不为空,我只想更新它.

有一种方法可以解决这个问题,我认为这不是正确的方法。它是:我将有一个 try-catch block ,如果它引发异常,我可以写入将新数据插入到 catch block 上的数据库中。但我相信会有更好的方法。

最佳答案

是的。您需要使用 try/catch block ,但不需要捕获 Exception根据 API如果没有结果,它会抛出 NoResultException,这取决于你想如何处理它。

DrawUnusedBalance drawUnusedBalance = null;
try{
drawUnusedBalance = (DrawUnusedBalance)query.getSingleResult()
catch (NoResultException nre){
//Ignore this because as per your logic this is ok!
}

if(drawUnusedBalance == null){
//Do your logic..
}

关于javax.persistence.NoResultException : No entity found for query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138458/

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