在Hibernate中,利用hql来获取对象list,并且进行遍历是非常简单的:
程序代码
String hql="from NewClasses order by Id desc";
List li=DbUtil.getSession().createQuery(hql).list();
Iterator<NewClasses> it=li.iterator();
while(it.hasNext())
{
NewClasses newclasses=it.next();
System.out.println(newclasses.getClassTitle());
System.out.println(newclasses.getAddDate());
}
但 如果用createSQLQuery()获取list 而采用上面的方法遍历时就会出现下面的错误:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
at com.zb.test.TestDbUtil.main(TestDbUtil.java:30)
程序代码
List li=DbUtil.executeQuery("select * from NewClasses order by Id desc");
Iterator<NewClasses> it=li.iterator();
while(it.hasNext())
{
NewClasses newclasses=it.next();
System.out.println(newclasses.getClassTitle());
System.out.println(newclasses.getAddDate());
}
原 因是我们没有将表与相关的实体类进行关联,我们 修改工具类的方法:
程序代码public static List executeQuery(String sql,Class cls){
Session s=HibernateSessionFactory.getSession();
Query q = s.createSQLQuery(sql).addEntity(cls);
return q.list();
}
调 用语句改为:
List li=DbUtil.executeQuery("select * from NewClasses order by Id desc",NewClasses.class);
Ok, 搞定!
本文介绍了在Hibernate中使用HQL和SQL进行查询的区别及注意事项。通过实例演示了如何正确地从数据库中获取对象列表,并对其进行遍历。同时,解决了一个常见错误:使用createSQLQuery时类型转换异常的问题。
363

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



