java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
Query query = getSession().createQuery("select e.provinceid from Province e where e.sid=?");
query.setParameter(0, pid);
String father =(String)query.uniqueResult();
System.out.println(father);

这是model的属性
private String provinceid; //这个是string类型啊

解决方案 »

  1.   

    你数据中的该字段,肯定是设置成了 long类型,你看看吧
      

  2.   

    类型转换。你找找。Stirng 不能转换Long
      

  3.   

    先不要强转,看看是什么。
     String father =(String)query.uniqueResult();
      

  4.   

    首先要了解 强制类型转换的条件,如 当A被强制转换为B时  要求A必须和B有关系的 即A是B的子类(这种情况会自动向上转换)或者 是B的父类 或者就是B的实例(这种当然不用强制转换也行),
    但是你现在的 request.getAttribute("t"); 返回的是long型的  long型与String类型 就不存在父子关系 所以你试图(Stirng)强转的时候 会报错  can not cast to String from long
      

  5.   

    把javaBean也贴出来看看吧
    你的uniqueResult()返回的是一个Object(其实就是一个持久化对象)
    你怎么给他转成String,
    如果你想把它转成String用toString()不是更好些么?
      

  6.   

    number说错了也就是long
      

  7.   

    采用类型转换(String)object方法这是标准的类型转换,将object转成String类型的值。使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用 instanceof做个类型检查,以判断是否可以转换。否则容易抛出CalssCastException异常。此外,需特别小心的是因定义为 Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。如:  Object obj = new Integer(100);  String strVal = (String)obj;  在运行时将会出错,因为将Integer类型强制转换为String类型,无法通过。
      

  8.   

    可以转成number,在转string。也可以直接toString()吧
      

  9.   

    不行啊
     Number num = (Number) query.uniqueResult();
        int  ret = num.intValue();
      

  10.   

    不行啊
     Number num = (Number) query.uniqueResult();
        int  ret = num.intValue();
    嗯还是不行 query.setParameter(0, pid);我觉得是这个pid我传入的是一个字符串 是不这里的问题啊
      

  11.   

    不行啊
     Number num = (Number) query.uniqueResult();
        int  ret = num.intValue();
    嗯还是不行 query.setParameter(0, pid);我觉得是这个pid我传入的是一个字符串 是不这里的问题啊
    就是这个问题 解决了
    public String findProvinceFather(String sid) {
    long l = Long.parseLong(sid);
    Query query = getSession().createQuery("select e.provinceid from Province e where e.sid=?");

    query.setParameter(0, l);
    query.uniqueResult();

    }
    ok
      

  12.   

    就是这个问题 解决了
    public String findProvinceFather(String sid) {
    long l = Long.parseLong(sid);
    Query query = getSession().createQuery("select e.provinceid from Province e where e.sid=?");

    query.setParameter(0, l);
    query.uniqueResult();

    }
    ok

    楼上的代码很粗糙,这里是会出问题的,判空都没进行