当前位置:编程学习 > JAVA >>

java.lang.String cannot be cast to java.lang.Long

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类型啊
--------------------编程问答-------------------- 你数据中的该字段,肯定是设置成了 long类型,你看看吧 --------------------编程问答-------------------- 肯定是你哪数据类型没注意,追踪一下 --------------------编程问答--------------------
引用 1 楼 xiaoshuidi123 的回复:
你数据中的该字段,肯定是设置成了 long类型,你看看吧
--------------------编程问答-------------------- 类型转换。你找找。Stirng 不能转换Long --------------------编程问答--------------------
引用 4 楼 rui888 的回复:
类型转换。你找找。Stirng 不能转换Long

我这明明是string啊 --------------------编程问答-------------------- 先不要强转,看看是什么。
 String father =(String)query.uniqueResult(); --------------------编程问答-------------------- 首先要了解 强制类型转换的条件,如 当A被强制转换为B时  要求A必须和B有关系的 即A是B的子类(这种情况会自动向上转换)或者 是B的父类 或者就是B的实例(这种当然不用强制转换也行),
但是你现在的 request.getAttribute("t"); 返回的是long型的  long型与String类型 就不存在父子关系 所以你试图(Stirng)强转的时候 会报错  can not cast to String from long --------------------编程问答-------------------- 把javaBean也贴出来看看吧
你的uniqueResult()返回的是一个Object(其实就是一个持久化对象)
你怎么给他转成String,
如果你想把它转成String用toString()不是更好些么? --------------------编程问答-------------------- pid 是什么格式的 --------------------编程问答--------------------
引用 9 楼 pigg7 的回复:
pid 是什么格式的
string --------------------编程问答--------------------
引用 10 楼 u010344162 的回复:
Quote: 引用 9 楼 pigg7 的回复:

pid 是什么格式的
string

number说错了 --------------------编程问答--------------------
引用 11 楼 u010344162 的回复:
Quote: 引用 10 楼 u010344162 的回复:

Quote: 引用 9 楼 pigg7 的回复:

pid 是什么格式的
string

number说错了
也就是long --------------------编程问答-------------------- 采用类型转换(String)object方法

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

Object obj = new Integer(100);  

String strVal = (String)obj;  

在运行时将会出错,因为将Integer类型强制转换为String类型,无法通过。 --------------------编程问答-------------------- 可以转成number,在转string。也可以直接toString()吧 --------------------编程问答--------------------
引用 14 楼 u012463264 的回复:
可以转成number,在转string。也可以直接toString()吧

不行啊 --------------------编程问答--------------------
引用 15 楼 u010344162 的回复:
Quote: 引用 14 楼 u012463264 的回复:

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

不行啊

 Number num = (Number) query.uniqueResult();
    int  ret = num.intValue(); --------------------编程问答-------------------- hql怎么给?那里传一个整型 --------------------编程问答-------------------- String s=String.valueOf(int); --------------------编程问答--------------------
引用 16 楼 u012463264 的回复:
Quote: 引用 15 楼 u010344162 的回复:

Quote: 引用 14 楼 u012463264 的回复:

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

不行啊

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

嗯还是不行 query.setParameter(0, pid);我觉得是这个pid我传入的是一个字符串 是不这里的问题啊 --------------------编程问答--------------------
引用 19 楼 u010344162 的回复:
Quote: 引用 16 楼 u012463264 的回复:

Quote: 引用 15 楼 u010344162 的回复:

Quote: 引用 14 楼 u012463264 的回复:

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

不行啊

 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
--------------------编程问答--------------------

引用 17 楼 u010344162 的回复:
hql怎么给?那里传一个整型

你那不是有HQL嘛 --------------------编程问答-------------------- 就是这个问题 解决了
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

楼上的代码很粗糙,这里是会出问题的,判空都没进行
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,