我mysql数据库有个字段,存钱的,hibernate映射实体类变成了double,现在要做一个求和,五毛钱也不能少。但是返回值不知道怎么转换类型,因为是货币类型,肯定不能转换成int,不然精度会丢失
Session session = super.getSession().getSessionFactory().openSession();
Transaction ta = session.beginTransaction();
Query q = session.createQuery("select sum(t.b) from table t where 2 > 1");
q.setFirstResult(0);
q.setMaxResults(1);
double Spending = ((Long)q.uniqueResult()).doubleValue();
ta.commit();
session.close();报错提示这个:java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long,求解,怎嘛解决?多谢

解决方案 »

  1.   

    double不能转换成Long
    或者你的意图是转换成long?
    注意long和Long有很大区别另外,最好不要用double保存金额,用整数保存以分为单位的金额比较好
      

  2.   

    我这样写就对了,但是有时候包空指针异常,不知道怎嘛判断if(q != null){
        Spending = Double.valueOf(q.uniqueResult().toString());
    }
      

  3.   

    再加一层判断
      if(q != null){
         if  (q.uniqueResult() != null){
            Spending = Double.valueOf(q.uniqueResult().toString());
         }
      }