package com.yourcompany.hibernate;
import java.util.*;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
public class Find
{
//public void doit()
public static void main(String bb[])
{
try
{
Configuration c=new Configuration();
Configuration cc=c.configure();
SessionFactory sf=cc.buildSessionFactory();
Session s=sf.openSession();
//Query query=s.createQuery("from Student d");
//Query query=s.createQuery("from Student where id=11");
Query query=s.createQuery("select student.name from Student student");
List list=query.list();
Iterator it=list.iterator();
while(it.hasNext())
{
Student st=(Student)it.next();
System.out.print(st.getName());
}
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
我的HQL应该没有错?难道出来的不是对象?请问应该如何解决这个异常 java.lang.ClassCastException?
------解决方法--------------------------------------------------------
1)
不懂hibernate,
但是你这SELECT语句:select student.name from Student student,为什么from 后面要两个Student?(虽然它也可以执行,不理解
2) 既然不允许自动转换,那么就强制转化试试:Query query=(Query)s.createQuery(..
------解决方法--------------------------------------------------------
可能是ORM的错误,能把错误都弄出来就好一些了,你的hql语句没有错,
------解决方法--------------------------------------------------------
Query query=s.createQuery("select student.name from Student student");
这句代码返回的是name属性集合,而不是student实例
所以
Student st=(Student)it.next();
会出现classCastException
------解决方法--------------------------------------------------------
s.createQuery("from Student student");这样就行啦,会返回整个Student对象的
------解决方法--------------------------------------------------------
String studentName=(String)it.next();