最佳答案
在我发布这个问题之前,我已经看了 这个,但是我不能得到我想要的。
我知道对于我编写的查询,可能只存在一行,或者根本不存在。因此,我没有理由使用 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());`
问题是,如果没有行,它会抛出一个异常,如果没有行,那么它可以正常工作。我知道这个问题,但我也在寻找最好的解决方案。
我想要的是,如果数据库中没有行,我想得到一个 null 对象(而不是得到一个异常) ,所以我将插入一个新的数据,如果它不是 null,我只是想更新它。
有一种方法可以解决这个问题,但我认为这不是正确的方法。它是: 我将有一个 try-catch 块,如果它抛出一个异常,我可以写入将新数据插入 catch 块上的 DB 中。但我相信会有更好的办法。