在使用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());就知道是什么了