java.lang.ClassCastException:

本文介绍了一个ClassCastException异常案例,分析了异常产生的原因在于HQL语句导致的数据类型不匹配,并给出了正确的HQL语句和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在调试时遇上这样的一个错误:

Exceptioninthread"main"java.lang.ClassCastException:java.lang.String atcom.zb.hibernate.Test.main(Test.java:24)

目标行是:Useru=(User)it.next();

程序代码

Testt=newTest();
Iteratorit=t.getUserList().iterator();
while(it.hasNext())
{
Useru=(User)it.next();   ********
System.out.println(u.getId()+""+u.getUserName()+""+u.getUserEmail()+"/n");
}



看了一篇关于"类装入问题解密,第2部分:基本的类装入异常"的文章,上面说到:
对于数组类型:目标类必须是数组类型或java.lang.Object、java.lang.Cloneable或java.io.Serializable。
如果违反了以上任何一条规则,那么类装入器就会抛出ClassCastException。修复这类异常的最简单方式就是仔细检查对象要转换到的类型是否符合以上提到的规则。

于是将User类改:

publicclassUserimplementsjava.io.Serializable

但还是不行,后来在一位朋友的提醒下,将hql语句改成:fromUser,就OK了~
原语句:selectuserNamefromUser

原语句的返回类型为:java.lang.Object ,所以就出现了上面的错误~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值