今天在调试时遇上这样的一个错误:
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 ,所以就出现了上面的错误~