首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

HQL 报 java.lang.ClassCastException 异常

2014-01-26 
package com.yourcompany.hibernateimport java.util.*import org.hibernate.*import org.hibernate.cfg

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();

        

热点排行