`

遍历createSQLQuery获取的list对象

阅读更多

在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, 搞定!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics