做项目的时候遇到这样的问题,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/
本文详细阐述了在使用Hibernate执行SQL语句获取数据时,查询结果无法自动转换为bean对象的问题,并提供了通过添加addEntity方法解决此问题的方法。同时,文章还分享了将查询结果转换为数组形式进行遍历的技巧。
708

被折叠的 条评论
为什么被折叠?



