当前位置: 代码迷 >> Java相关 >> 这时报"java.lang.ClassCastException"错误,
  详细解决方案

这时报"java.lang.ClassCastException"错误,

热度:6606   发布时间:2013-02-25 21:51:12.0
hibernate中使用sql遇到的问题
在使用MyEclipse5 + Hibernate3.1 开发时,有个查询返回数据记录;
使用用hql时可以正常返回如下:
Java code
public ZYxaqOnlineloco[] queryByHql(){    String hql = "FROM ZYxaqOnlineloco as p ";    Query q = this.session.createQuery(hql) ;    List l = q.list() ;                return (ZYxaqOnlineloco[])l.toArray(new ZYxaqOnlineloco[0]);}

其中ZYxaqOnlineloco是用hibernate tools自动映射生成的pojo类。

但是用sql方式查询后如下:
Java code
public ZYxaqOnlineloco[] queryBySql(){    String sql = "select * from z_yxaq_onlineloco";    Query q = this.session.createSQLQuery(sql);        List l = q.list() ;                return (ZYxaqOnlineloco[])l.toArray(new ZYxaqOnlineloco[0]);}

其中z_yxaq_onlineloco是对应的数据库表,这时报"java.lang.ClassCastException"错误,跟踪调试可以看到在List l = q.list();执行后l中确实有记录数据,可是在强制转换时报这个错不知怎么回事?

还有我想返回自定义类型的数组时也是这样,使用hql可以正常返回,使用sql就报"ArrayStoreException"。

请教高手指点一二!!!谢了



------解决方案--------------------------------------------------------
貌似应该这样,你试试,这框架这东西时间长不用就忘记一些bt的要求了.呵呵,如果不行的话你百度下setResultTransformer

Query query = session.createQuery(queryString);
query.setResultTransformer(Transformers.aliasToBean(ZYxaqOnlineloco.class));

还是不行的话,你打印下
System.out.println(it.next().getClass().getName());就知道是什么了
  相关解决方案