休眠/JPA 处理空结果集



我有一个标准生成器,它被定义为返回一个长整型。如果结果集为空,则整个应用程序将失败。我如何处理以返回一个设定的数字,例如 1000?

Long yesterday = new Long(0);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> q = cb.createQuery(Long.class);
Root<CustomerHistory> hist = q.from(CustomerHistory.class);
q.multiselect(hist.get("total"));
Date yesterDate = new LocalDate().minusDays(1).toDateTimeAtStartOfDay().toDate();
Predicate w1 = cb.equal(hist.<Date>get("date"), yesterDate);
Predicate w2 = cb.equal(hist.get("customer"), customer);
q.where(w1,w2);
yesterday = em.createQuery(q).getSingleResult();

return yesterday < tot;

如果有一个空的结果集,Query.getSingleResult()会抛出一个javax.persistence.NoResultException,这是一个RuntimeException。您可以自由地在 try-catch 块中捕获它并从那里处理它。

若要设置结果集的最大数量,请调用Query.setMaximumResults(int maxResult)并调用getResultList()(返回所需实体的List)。

来自 JPA API

java.lang.Object getSingleResult()
Execute a SELECT query that returns a single untyped result.
Returns:
   the result
Throws:
   NoResultException - if there is no result
   NonUniqueResultException - if more than one result

考虑捕获 NoResultException 的异常并继续执行逻辑

相关内容

  • 没有找到相关文章

最新更新