hibernate取数据库得到集合问题

来源:互联网 发布:卡盟官网源码带后台 编辑:程序博客网 时间:2024/06/07 21:47

做项目的时候遇到这样的问题,hibernate执行SQL语句返回来的list集合调试断点的时候检查list集合有值,但是返回action遍历的时候在list.get(i);这句话时报异常,调试结果是list集合为空,查找到的结果就是用SQL语句不能自动转换成bean对象,所以要转换成数组形式在进行遍历,这时返回的list集合里的值就可以遍历出来了.

偷个懒把别人的代码粘过来了,还有个错误没有写,有时间在总结吧:

Hibernate执行sql语句


Hibernate执行sql语句:
BasicServiceImpl basicServiceImpl = new BasicServiceImpl();
String hql = "select * from AccountInfo where selfId='0000100003' or(left(selfId,10)='0000100004' and 
nodeSum=0)";

*写SQL语句的时候做好给表名起个别名

TManager tManager = TManagerImpl.getInstance();
List accountList = tManager.getSession().createSQLQuery(hql).list();
//List accountList = tManager.getSession().createSQLQuery(hql).addEntity(AccountInfo.class).list();
for(int i=0;i<accountList.size();i++){
Object[] objects = (Object[])accountList.get(i);
for(int j=0;j<objects.length;j++){
System.out.println(objects[j].getClass().getName());// 从这个输出结果可以看出,objects[j]的
值实际上是AccountInfo的属性(表的字段)而不是AccountInfo对象,
}
System.out.println(objects.length);
}
信息: java.lang.ClassCastException:Ljava.lang.Object; cannot be cast to net.yjiasoft.sss.table.AccountInfo
分析:原来是查询出来的字段并不能自动转换为bean对象,所以要添加addEntity(Clazz class)。

来源:http://blog.163.com/ygm0104@126/blog/static/169767488201271511240611/

0 0
原创粉丝点击