我有一个表test1有一个列数。我想检索所有列的总和。所以我使用这样的SUM函数
SELECT SUM(cda.amount)FROM test cda
如果表是空的,那么它会给我null
等效的JPA代码如下
如果有n
public Double sumAmount()
{
Query query=entityManagerUtil.getQuery("SELECT SUM(cda.amount)FROM test cda");
Object result=query.getSingleResult();
return (Double)result;
}
现在在我的控制器中,我将此金额添加到校长;
Double total=prinicipal+daoImpl.sumAmount();
当sumAmount()
返回null
时,我在此处添加prinicipal+daoImpl.sumAmount();
时会收到NULLPOINTEREXCEPTION
所以我想如果金额为空则返回0,所以尝试ISNULL和IFNULL都喜欢这个
SELECT ISNULL(SUM(cda.amount),0) FROM test cda
但在这里它给了我以下错误
No data type for node: org.hibernate.hql.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'ISNULL' {originalText=ISNULL}
任何人都可以告诉我如何在JPA中正确使用ISNULL
答案 0 :(得分:16)
与 ISNUL 或 NVL 命令相同的是合并命令。
所以你可以使用SELECT coalesce(SUM(cda.amount),0) FROM test cda