繁体   English   中英

Hibernate / JPA处理空结果集

[英]Hibernate/JPA handling empty result set

我有一个标准构建器,定义为返回Long。 如果结果集为空,则整个应用程序将失败。 如何处理这个以返回一组数字,例如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的异常并继续逻辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM