专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Java Exception

HQL 报 java.lang.ClassCastException 异常

发布时间:2010-06-05 12:34:40 文章来源:www.iduyao.cn 采编人员:星星草

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

    
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: