`

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

分享到:
评论

相关推荐

    Query对象setResultTransFormer()

    在上面的代码中,我们使用 setResultTransformer() 方法将查询结果转换为 Tree 对象,然后使用 list() 方法获取查询结果,最后遍历结果集,使用 Tree 对象来获取每个字段的值。 最后,让我们总结一下 ...

    hibernate3中通过nativesql或取部分字段并映射为具体对象的实现

    这篇博客探讨了如何在Hibernate3中通过原生SQL获取部分字段,并将这些数据映射到具体的对象实例。 首先,原生SQL查询允许开发者绕过Hibernate的HQL(Hibernate Query Language),直接使用数据库的SQL语法进行查询...

    ceateQuery ceateSQLQuery

    而`iterator()`方法则只获取记录的主键,然后在遍历迭代器时按需执行额外的SQL查询(根据主键加载完整数据),这在处理大量数据时可以降低内存消耗,但可能会增加数据库交互的次数。 总的来说,`createQuery`适用于...

    传智168期JavaEE hibernate 姜涛 day36~day37(by阿滔)

    List&lt;Customer&gt; list = session.createSQLQuery("select * from customer") .addEntity(Customer.class) .list(); for (Customer cust : list) { System.out.println(cust); } ``` ### 基本的CRUD操作 Hibernate...

    hibernate语句大全

    - **应用场景**:根据对象标识符(OID)获取实体对象。 - **实现方法**: - 使用`get`方法: ```java Order order = (Order) session.get(Order.class, orderId); ``` - 使用`load`方法: ```java Order ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.5.5 遍历对象图  8.6 小结  8.7 思考题 第9章 通过Hibernate操纵对象(下)  9.1 与触发器协同工作  9.2 利用拦截器(Interceptor)生成审计日志  9.3 Hibernate的事件处理机制  9.4 批量处理数据  9.4.1...

    hibernate查询语言--HQL

    // 遍历并处理所有学生对象 } } ``` #### 4.3 条件查询 `SimpleConditionQueryTest.java`中可能包含了更复杂的条件查询,如根据年龄范围查找学生。 ```java public class SimpleConditionQueryTest { public ...

    Hibernate过滤

    查询和过滤一对一时,可以通过`Session.get()`或`Session.load()`方法直接获取关联对象,或者在HQL查询语句中加入关联条件进行过滤。 **一对多关系(One-to-Many):** 在实体间存在一个实体可以对应多个另一个...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.5.5 遍历对象图  8.6 小结  8.7 思考题 第9章 通过Hibernate操纵对象(下)  9.1 与触发器协同工作  9.2 利用拦截器(Interceptor)生成审计日志  9.3 Hibernate的事件处理机制  9.4 批量处理数据  9.4.1...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.5.5 遍历对象图  8.6 小结  8.7 思考题 第9章 通过Hibernate操纵对象(下)  9.1 与触发器协同工作  9.2 利用拦截器(Interceptor)生成审计日志  9.3 Hibernate的事件处理机制  9.4 批量处理数据  9.4.1...

    在Java的Hibernate框架中使用SQL语句的简单介绍

    在Hibernate中,你可以通过`Session`对象的`createSQLQuery`方法创建一个SQL查询。例如: ```java Query query = session.createSQLQuery("select * from t_user usr"); ``` 执行上述代码后,Hibernate将会执行...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.5.5 遍历对象图  8.6 小结  8.7 思考题 第9章 通过Hibernate操纵对象(下)  9.1 与触发器协同工作  9.2 利用拦截器(Interceptor)生成审计日志  9.3 Hibernate的事件处理机制  9.4 批量处理数据  9.4.1...

    HQL经典语句

    使用`iterator()`方法遍历已加载的数据集,如`orderList.iterator()`,这在处理大量数据时特别有用,可以有效降低内存消耗。 - **基于OID查询** OID(Object Identity)查询,通过`session.get()`或`session.load...

    ssh查询的demo

    6. **结果集处理**:查询执行后,你可以调用`list()`方法获取结果集,这将返回一个包含`User`对象的列表。然后,你可以遍历这个列表,对每个对象进行操作或展示。 7. **事务管理**:为了保证数据一致性,你需要使用...

    hibernate调用存储过程的方法调用

    如果有结果集,可以使用`list`获取并处理结果。 - **处理结果**:如果存储过程返回结果,可以遍历结果集,转换为Java对象。 例如,对于一个名为`insertUser`的存储过程,可能的Java代码如下: ```java Session ...

    hibernate调用存储过程

    在上述代码中,我们使用`list()`获取结果集,然后遍历处理。对于单个返回值,可以使用`getSingleResult()`。如果存储过程没有返回值,`execute()`方法就足够了。 5. **与MySQL结合** 在给出的标签中提到了...

    java面试问题汇总(非常全面)

    使用 `request` 对象获取通过 GET 或 POST 方式传递过来的数据。 #### 45. JSP页面表的数据是用什么标签得到的 使用 `&lt;c:forEach&gt;` 等 JSTL 标签处理列表数据。 #### 46. JSP有哪些内置对象?作用分别是什么? - *...

    在Hibernate中处理批量更新和批量删除

    在IT领域,尤其是在Java开发与数据库交互的过程中,Hibernate作为一个强大的对象关系映射(ORM)框架,为开发者提供了诸多便利。然而,在处理大量数据时,如何有效地进行批量更新和批量删除操作,是每一个开发者都...

Global site tag (gtag.js) - Google Analytics