DAO 里边的方法
public int getNum()//获得总记录数
{
 Session session=factory.HibernateSessionFactory.getSession();
 int n=0;
 String sql = "select count(id) from Lsl";
 Query query=session.createQuery(sql);
 n = ((Integer)query.list().get(0)).intValue();
 return n;
}
执行时报错:
java.lang.ClassCastException: java.lang.Long
DAO.HibernateDAO.getNum(HibernateDAO.java:44)
Action.loginAction.execute(loginAction.java:33)

解决方案 »

  1.   

    int total = ((Long)this.session.createQuery(Hql).uniqueResult()).intValue();Hql :select count(*) from tb_table
      

  2.   

    java.lang.ClassCastException: java.lang.Long 
      

  3.   

    具体的我没有用过
    所以具体原因 不清楚但如果是 类型的问题的话
    试一试
    Integer.parseInt(query.list().get(0));
      

  4.   

    具体的我没有用过
    所以具体原因 不清楚但如果是 类型的问题的话
    试一试
    Integer.parseInt(query.list().get(0));
      

  5.   

    上面错了,应是this.getSession
    int total = ((Long)this.getSession.createQuery(Hql).uniqueResult()).intValue(); Hql :select count(*) from tb_table
      

  6.   

    建議LZ這樣寫: Object ret = null;
    String sql = "select count(id) from Lsl";
    Query query=session.createQuery(sql);
    ret = query.list().get(0); 
      return (ret instanceof Integer) ? (Long) ret : (Integer) ret;
      

  7.   

    寫反了一點:
    Object ret = null; String sql = "select count(id) from Lsl"; Query query=session.createQuery(sql); ret = query.list().get(0); 
    return (ret instanceof Integer) ? (Integer) ret : ((Long) ret).intValue();
      

  8.   

    呵呵 一點都不復雜,只是引用了你自己的代碼,定義一個Object變量,它用來保存返回的數據,進行一步轉型就可以了。
      

  9.   

    Integer.valueOf(session.createQuery("select count(*) from  Lsl").iterator().next());
    这样就好啦!
      

  10.   

    把Integer 改成Long就OK了
      

  11.   

    建议使用BigDecimal,放置越界。public BigDecimal getNum()//获得总记录数 

    Session session=factory.HibernateSessionFactory.getSession(); String sql = "select count(id) from Lsl"; 
    Query query=session.createQuery(sql); 
    return new BigDecimal(query.list().get(0).toString());
      

  12.   


    不同的数据库驱动,count(*)对应的java类型可能不一样需要考虑Integer和Long 2种情况
      

  13.   

    你是要查看query执行后list的大小吗? 它就是查询结果数据的数量!
    你直接用query.list().size();不就完了吗!!!!
      

  14.   

    胡说八道.
    HIbernate后来的版本把INT改为LONG了.以前的用INT还是正常的.
      

  15.   

    大家好,我是猎头carol,很高兴认识大家,我们现在手里有很多的case在做很急,也许会给您提供一些很不错的chance,希望大家能结识我这个朋友,MSN:[email protected]
      

  16.   

    建议用((Number)list.get(0)).intValue();
    因为无论是Integer还是Long都是Number的子类,这样写一定不会报错。