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

希尔瓦纳斯 2013-11-05 12:59:07
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类型啊
...全文
13601 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
爪哇三郎 2013-11-05
  • 打赏
  • 举报
回复
就是这个问题 解决了 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 [/quote] 楼上的代码很粗糙,这里是会出问题的,判空都没进行
别闹腰不好 2013-11-05
  • 打赏
  • 举报
回复
引用 17 楼 u010344162 的回复:
hql怎么给?那里传一个整型
你那不是有HQL嘛
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 19 楼 u010344162 的回复:
[quote=引用 16 楼 u012463264 的回复:] [quote=引用 15 楼 u010344162 的回复:] [quote=引用 14 楼 u012463264 的回复:] 可以转成number,在转string。也可以直接toString()吧
不行啊[/quote] Number num = (Number) query.uniqueResult(); int ret = num.intValue();[/quote] 嗯还是不行 query.setParameter(0, pid);我觉得是这个pid我传入的是一个字符串 是不这里的问题啊[/quote] 就是这个问题 解决了 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
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 16 楼 u012463264 的回复:
[quote=引用 15 楼 u010344162 的回复:] [quote=引用 14 楼 u012463264 的回复:] 可以转成number,在转string。也可以直接toString()吧
不行啊[/quote] Number num = (Number) query.uniqueResult(); int ret = num.intValue();[/quote] 嗯还是不行 query.setParameter(0, pid);我觉得是这个pid我传入的是一个字符串 是不这里的问题啊
别闹腰不好 2013-11-05
  • 打赏
  • 举报
回复
String s=String.valueOf(int);
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
hql怎么给?那里传一个整型
别闹腰不好 2013-11-05
  • 打赏
  • 举报
回复
引用 15 楼 u010344162 的回复:
[quote=引用 14 楼 u012463264 的回复:] 可以转成number,在转string。也可以直接toString()吧
不行啊[/quote] Number num = (Number) query.uniqueResult(); int ret = num.intValue();
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 14 楼 u012463264 的回复:
可以转成number,在转string。也可以直接toString()吧
不行啊
别闹腰不好 2013-11-05
  • 打赏
  • 举报
回复
可以转成number,在转string。也可以直接toString()吧
别闹腰不好 2013-11-05
  • 打赏
  • 举报
回复
采用类型转换(String)object方法 这是标准的类型转换,将object转成String类型的值。使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用 instanceof做个类型检查,以判断是否可以转换。否则容易抛出CalssCastException异常。此外,需特别小心的是因定义为 Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。如:   Object obj = new Integer(100);   String strVal = (String)obj;   在运行时将会出错,因为将Integer类型强制转换为String类型,无法通过。
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 11 楼 u010344162 的回复:
引用 10 楼 u010344162 的回复:
[quote=引用 9 楼 pigg7 的回复:] pid 是什么格式的
string
number说错了[/quote]也就是long
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 10 楼 u010344162 的回复:
引用 9 楼 pigg7 的回复:
pid 是什么格式的
string
number说错了
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 9 楼 pigg7 的回复:
pid 是什么格式的
string
pigg7 2013-11-05
  • 打赏
  • 举报
回复
pid 是什么格式的
闲去野鹤 2013-11-05
  • 打赏
  • 举报
回复
把javaBean也贴出来看看吧 你的uniqueResult()返回的是一个Object(其实就是一个持久化对象) 你怎么给他转成String, 如果你想把它转成String用toString()不是更好些么?
风一样的执着 2013-11-05
  • 打赏
  • 举报
回复
首先要了解 强制类型转换的条件,如 当A被强制转换为B时 要求A必须和B有关系的 即A是B的子类(这种情况会自动向上转换)或者 是B的父类 或者就是B的实例(这种当然不用强制转换也行), 但是你现在的 request.getAttribute("t"); 返回的是long型的 long型与String类型 就不存在父子关系 所以你试图(Stirng)强转的时候 会报错 can not cast to String from long
zhuweisyyc 2013-11-05
  • 打赏
  • 举报
回复
先不要强转,看看是什么。 String father =(String)query.uniqueResult();
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 4 楼 rui888 的回复:
类型转换。你找找。Stirng 不能转换Long
我这明明是string啊
tony4geek 2013-11-05
  • 打赏
  • 举报
回复
类型转换。你找找。Stirng 不能转换Long
希尔瓦纳斯 2013-11-05
  • 打赏
  • 举报
回复
引用 1 楼 xiaoshuidi123 的回复:
你数据中的该字段,肯定是设置成了 long类型,你看看吧
加载更多回复(2)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧