Coalesce <integer> ClassCastException,尝试强制转换为Long </integer>

时间:2014-10-08 08:38:38

标签: java jpa criteria

我正在尝试在我的查询中使用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。

0 个答案:

没有答案