Java Hibernate/JPA处理空结果集
我有一个标准生成器,它被定义为返回一个Long。如果结果集为空,则整个应用程序将失败。如何处理此问题以返回一个设置的数字,例如1000Java Hibernate/JPA处理空结果集,java,hibernate,jakarta-ee,jpa,null,Java,Hibernate,Jakarta Ee,Jpa,Null,我有一个标准生成器,它被定义为返回一个Long。如果结果集为空,则整个应用程序将失败。如何处理此问题以返回一个设置的数字,例如1000 Long yesterday = new Long(0); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Long> q = cb.createQuery(Long.class); Root<CustomerHistory> hist = q.from(Custo
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;
Long昨天=新的Long(0);
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery q=cb.createQuery(Long.class);
根历史=q.from(CustomerHistory.class);
q、 multiselect(历史获取(“总计”);
Date yesterDate=new LocalDate().minusDays(1.ToDateTimeAtStarToDay().toDate();
谓词w1=cb.equal(历史获取(“日期”),昨天日期);
谓词w2=cb.equal(历史获取(“客户”),客户);
q、 式中(w1,w2);
昨天=em.createQuery(q).getSingleResult();
昨天返回
如果存在空的结果集,查询.getSingleResult()
抛出一个javax.persistence.NoResultException
,它是一个运行时异常。您可以在try-catch块中捕获它并从那里处理它
要设置结果集的最大数量,请调用Query.setMaximumResults(int maxResult)
并调用getResultList()
(它返回所需实体的列表)。如果结果集为空,则调用Query.getSingleResult()
抛出一个javax.persistence.NoResultException
,它是一个RuntimeException
。您可以在try-catch块中捕获它并从那里处理它
要设置结果集的最大数量,请调用Query.setMaximumResults(int maxResult)
并调用getResultList()
(它返回所需实体的列表)。
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的异常并继续使用jpaapi中的逻辑
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的异常并继续执行逻辑捕获您的异常,在这种情况下,您需要捕获一个NoResultException
:啊,这很有意义!总有一天我会学会的!捕获您的异常,在这种情况下,您需要捕获一个NoResultException
:啊,这很有意义!总有一天我会学会的!