我正在尝试在我的查询中使用Coalesce,当我执行SUM并且没有行时返回0而不是NULL。
这是我的代码:
...
Root<ArticleBean> rootArticle = cq.from(ArticleBean.class);
Coalesce<Integer> coalesce = cb.coalesce();
coalesce.value(cb.sum(rootArticle.get("quantity")));
coalesce.value(0);
cq.select(coalesce);
Query query = entityManager.createQuery(cq);
return (Integer) query.getSingleResult();
例外:
java.lang.ClassCastException: java.lang.Long
at the line of the return.
为什么会尝试将结果转换为Long?
特别是当我使用Coalesce&lt; Integer&gt;方法sum()返回一个Expression&lt; Integer&gt; ...
我知道我可以这样做:
((Long) query.getSingleResult()).intValue()
但我有点好奇,我想知道为什么它会试图转向Long。