日期:2014-05-19  浏览次数:21023 次

hibernate 的 sum 求和报错~!
select sum(c.money) from HtBill c left join c.htUserInfoByUserId u left join c.htUserInfoByUserId.htUserDepart p left join c.htUserInfoByUserId.htCity ct where 1=1 
当数据库里有记录的时候,不报错!
当数据库里没有记录的时候报错null exception!

求和的方法为
Session session = super.getHibernateTemplate().getSessionFactory().openSession();
List list = session.createQuery(hql).list();
Number num = (Number) list.get(0);
if(num.equals("0") || num.equals("") || num==null){
return 0;
}else{
return num.intValue();
}

已经防止没有结果的时候出现null了!
还是报错如下:
java.lang.NullPointerException

------解决方案--------------------
楼主 没有记录的时候报空指针错误会不是是Number num = (Number) list.get(0);
这一句代码的原因呢
最好是先判断一下是否有取到结果集
再有就是 我个人习惯还是在sql里过滤数据 Oracle数据库的用 NVL函数过滤一下空不是更好么 直接替换为0 这样就省去你在代码里的if-else了
------解决方案--------------------
引用:
楼主 没有记录的时候报空指针错误会不是是Number num = (Number) list.get(0);
这一句代码的原因呢
最好是先判断一下是否有取到结果集
再有就是 我个人习惯还是在sql里过滤数据 Oracle数据库的用 NVL函数过滤一下空不是更好么 直接替换为0 这样就省去你在代码里的if-else了
我也觉得是这个原因。你先确定一下报错得位置。我认为,你得list根本就没有取到任何数据。