`
zcw_java
  • 浏览: 303844 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate查询返回list无法转换对象

 
阅读更多
有这样一段代码,返回的list无法转换成User对象
public List<User> getStoreList(final int pageNo,final int pageSize,final String role,final String check) {
        //type is cpUser 商品type
        String hql="";
        if(check.equals("通过")){
           hql = "from User user inner join user.roles as role where role.name='" + role + "' and user.extAttributes.attr3='通过' order by user.id desc";
        }else{
            //未通过,扩展可直接扩展终态hql
            hql = "from User user inner join user.roles as role where role.name='" + role + "' and user.enabled=false and user.extAttributes.attr3='未审核' order by user.id desc";
        }
        final String query = hql;
        List list = (List)this.getHibernateTemplate().execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                return session.createQuery(query)
                        .setFirstResult((pageNo-1)*pageSize)
                        .setMaxResults(pageSize)
                        .list();
            }
        });
        return list;
    }

弄了弄,才发现!原来是hql这个出了问题,断点加上看看list的值明明就是user对象,但就是无法转换,这是因为hibernate在表连接之后,让所有的连接表一起组成了一个对象,这个hql其实是返回了2个对象
hql = "select user"这样就搞定了,给他指定一个查询结果,不然他太勤快了都给你查询出来了,呵呵
分享到:
评论

相关推荐

    hibernate将本地SQL查询结果封装成对象

    如果查询返回的是多个对象,可以使用`setResultTransformer()`配合`Transformers.aliasToBean()`将结果集转换为指定类型的对象列表: ```java query.setResultTransformer(Transformers.aliasToBean(MyEntity.class...

    hibernate将本地SQL查询结果封装成对象(最终).zip

    - 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,这些结果集将自动封装为对应的Java对象。 5. 示例: 假设我们有一个`User`实体类,对应...

    Hibernate连表查询 Hibernate连表查询

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发人员将Java对象模型映射到数据库表,并在对象和数据库之间进行转换。在实际开发过程中,我们经常会遇到需要从多个表中获取数据的情况,这时就需要用到连...

    hibernate多表查询详解

    本文将深入探讨Hibernate中实现多表查询的各种方法,包括Object[]形式、对象方式以及集合list形式的查询。 ### 1. Object[]形式的查询 Object[]形式的查询适用于简单的联接查询,返回的结果是一个对象数组,每个...

    Hibernate教程24_Hibernate的补充_list与iterator

    `list()`方法用于将查询结果转换为Java集合,通常是ArrayList或LinkedList。这种方法一次性将所有结果加载到内存,适用于结果集较小的情况。如果结果集过大,可能会导致内存溢出。 4. **iterator()方法** `...

    Hibernate hql查询语法总结

    查询结果通常为`Object[]`数组,可以通过自定义封装将其转换为更具体的对象。 总之,Hibernate HQL提供了丰富的查询功能,使得开发者能够以面向对象的方式处理数据库操作,大大提高了开发效率。通过熟练掌握HQL,...

    Hibernate 函数 ,子查询 和原生SQL查询

    1. `Session.createSQLQuery(sql)`:创建一个SQL查询对象,然后可以通过addEntity(), addScalar()等方法来指定返回结果的映射。 2. `SessionFactory.openSession().createSQLQuery(sql).list()`:执行查询并获取...

    hibernate实现分页查询

    执行查询并将结果转换为List类型: ```java List result = query.list(); ``` 完整的分页查询方法实现如下: ```java public List getPageList(int thisNumber, int sumCount, String sql) { Session session = ...

    Hibernate中的查询:HQL、Criteria、原生SQl

    Criteria API是Hibernate提供的另一种查询方式,它提供了一种面向对象的查询接口,允许开发者动态构建查询。这种方法更加灵活,尤其在构建复杂的查询条件时。以下是一个简单的示例: ```java Session session = ...

    Hibernate查询语言.doc

    Hibernate也允许使用原生SQL查询,通过`createSQLQuery()`方法创建`SQLQuery`对象,然后可以使用`addEntity()`或`setResultTransformer()`将结果转换为对象。 总的来说,Hibernate的查询语言提供了一套灵活且强大...

    Hibernate的查询操作

    在处理返回结果时,如果希望直接将查询结果转换为实体类对象,可以使用构造函数来指定返回的对象类型。例如,`select new 包名.类名(属性1,属性2……) from 实体类`,这需要在实体类中添加对应的带参构造方法,参数...

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

    在Java的持久化框架Hibernate中,开发者经常需要根据特定需求查询数据库并返回对象。`Hibernate3` 提供了丰富的API来实现这样的功能,包括使用原生SQL(Native SQL)进行查询,然后将查询结果映射到Java对象上。这篇...

    strut+hibernate编码时对LIST对像操作

    特别是在处理数据库操作时,利用Hibernate的强大ORM(对象关系映射)功能,可以将复杂的SQL语句转换为简单的Java代码,极大地简化了数据访问层的开发工作。在Struts+Hibernate的开发模式下,对LIST对象的操作是常见...

    hibrenate方法和对象查询源码

    在源码层面,当我们调用`createQuery()`或`createCriteria()`时,Hibernate会解析HQL或Criteria构建的查询语句,生成对应的SQL,然后执行这个SQL并返回结果。 进一步地,我们可以研究Hibernate的二级缓存机制。二级...

    Hibernate中Sql语句

    最后,调用`list()`方法执行查询,并返回转换后的`SumPlace`对象列表。 #### 三、示例代码分析 根据给定的代码片段,我们来看一下具体是如何实现的: - **构造SQL语句**:根据传入的参数动态构建SQL查询语句。这...

    hibernate查询

    本文将详细介绍Hibernate的几种主要查询方式,包括对象的状态变化、数据加载机制,以及如何通过不同方法进行条件查询。 #### 二、对象状态及其变化 在Hibernate中,一个对象可以处于三种不同的状态:自由态...

    Hibernate教程(数据查询)HQL,PDF格式

    此外,HQL的查询结果默认被转换为对应的Java对象,而SQL查询结果通常是以记录集的形式返回。 #### 结论 通过上述介绍,我们可以看到Hibernate和HQL的强大之处在于它们能够提供一种简单且直观的方式来处理数据库...

    Hibernate的一些基础的查询资料,备份

    HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是以类和对象为中心。例如,查询所有用户,你可以写: ```java Session session = sessionFactory.openSession(); String hql = "FROM User"; List...

    Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法

    ### Hibernate SQLQuery 查询Oracle char类型结果为一个字符的解决方法 在使用Hibernate框架结合Oracle数据库进行数据查询时,经常会遇到一个问题:当查询的结果集中包含char类型的字段时,Hibernate可能会将其映射...

Global site tag (gtag.js) - Google Analytics