日期:2014-05-20  浏览次数:20592 次

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