`
xiaoyaocai
  • 浏览: 39579 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate Query 隐式多表查询

 
阅读更多

一个很郁闷的Hibenate Query问题,多表查询时,HQL 采用占位符访问不到数据,也不报错,返回空数组,用HQL拼接的方式能够读取到目标数据!请博客里的高人留迹为小生解惑,非常感谢。

在dao层访问的关键封装为(采用占位符):

String hql = "from UploadSheet obj where 1=1 and obj.uploadType=?";		
List values = new ArrayList();
values.add(type);
if(user.getId() != null){
	hql = hql + " and obj.uploader.id=?";	//多表隐式查询HQL,也是访问不到数据代码段
	values.add(user.getId());
}
return this.listByParamQuery(hql, values.toArray(), pageNum, pageSize, "obj.uploadDate", false);

 Hibernate 配置采用配置文件的方式 UploadSheet.hbm.xml (部份无相关的字段映射已省略)文件代码:

<hibernate-mapping>
    <class
        name="com.botwave.sss.business.entity.UploadSheet"
        table="t_edu_uploadSheet"
        lazy="true"
        optimistic-lock="version"
    >
        <id
            name="id"
            column="id"
            type="java.lang.String"
            length="32"
            unsaved-value="null"
        >
		<generator class="uuid.hex">   
            </generator>
        </id>
<!--关键映射代码段-->
         <many-to-one
            name="uploader"
            class="com.botwave.core.business.entity.User"
            cascade="none"
            outer-join="auto"
            column="uploader"
        />       
       <property
            name="status"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="status"
         />    
           <property
            name="uploadDate"
            type="java.util.Date"
            column="uploadDate"
         />     
         <property
            name="errorRows"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="errorRows"
         /> 
          <property
            name="uploadType"
            type="java.lang.Integer"
            update="true"
            insert="true"
            column="uploadType"
         />      
    </class>
</hibernate-mapping>

 User.hbm.xml 配置文件:

<hibernate-mapping>
    <class
        name="com.botwave.core.business.entity.User"
        table="t_edu_user"
        lazy="true"
        optimistic-lock="version"
    >
		<id
            name="id"
            column="id"
            type="java.lang.String"
            length="32"
            unsaved-value="null"
        >
            <generator class="uuid.hex">
            </generator>
        </id>        
        <property
            name="description"
            type="java.lang.String"
            update="true"
            insert="true"
            column="description"
            length="100"
        />
        <property
            name="email"
            type="java.lang.String"
            update="true"
            insert="true"
            column="email"
            length="20"
        />
        <property
            name="fullName"
            type="java.lang.String"
            update="true"
            insert="true"
            column="fullName"
            length="32"
            not-null="true"
        />
        <property
            name="password"
            type="java.lang.String"
            update="true"
            insert="true"
            column="password"
        />
    </class>
</hibernate-mapping>
分享到:
评论

相关推荐

    Hibernate的缓存级联查询

    HQL(Hibernate Query Language)是Hibernate提供的面向对象的查询语言,它支持多种连接查询类型,如内连接、迫切内连接、隐式内连接、左外连接、迫切左外连接、右外连接和交叉连接,提供了与SQL类似的查询功能。...

    hibernate的使用心得

    在本文中,我们将深入探讨Hibernate的使用心得,特别是关注HQL(Hibernate Query Language)查询的技巧和优化策略。HQL是Hibernate框架中用于操作对象关系映射的SQL方言,它允许开发者以面向对象的方式来编写查询,...

    hibernate源码分析过程

    Hibernate Query Language(HQL)是 Hibernate 的查询语言。HQL 可以使用面向对象的方式来查询对象,可以使用 from、where、order by 等语句。 Criteria Queries Criteria Queries 是 Hibernate 的一种查询方式,...

    Hibernate+中文文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate 框架的基础四

    ### Hibernate框架基础四:深入理解HQL多表检索...综上所述,通过深入了解HQL的多表检索技术、事务管理及隔离级别、查询优化方法以及合理的抓取策略配置,可以帮助开发者更高效地使用Hibernate框架处理复杂的业务逻辑。

    hibernate学习文档

    - **HQL(Hibernate Query Language)**:类似于 SQL 的查询语言,支持面向对象的语法结构。 - **Criteria API**:提供了一种更灵活的构建查询条件的方法,可以动态地添加过滤条件。 ##### 3.3 事务管理 Hibernate...

    hibernate3.2中文文档(chm格式)

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    HibernateAPI中文版.chm

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    Hibernate开发指南.pdf

    7. **HQL(Hibernate Query Language)**:介绍Hibernate特有的查询语言,类似于SQL,但更适应面向对象的编程风格,讲解如何编写HQL查询语句,以及参数绑定和结果集的处理。 8. **Caching缓存**:探讨Hibernate的...

    hibernate学习资料

    4. Query:提供查询数据库的功能,包括HQL(Hibernate Query Language)和Criteria API。 三、Hibernate配置 - hibernate.cfg.xml:主要配置数据库连接信息、方言、缓存策略等。 - 映射文件:XML格式,定义实体类与...

    Hibernate 中文 html 帮助文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    Hibernate中文详细学习文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    最全Hibernate 参考文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate 体系结构与配置 参考文档(html)

    14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    Hibernate教程

    20.4. 查询缓存(The Query Cache) 20.5. 理解集合性能(Understanding Collection performance) 20.5.1. 分类(Taxonomy) 20.5.2. Lists, maps 和sets用于更新效率最高 20.5.3. Bag和list是反向集合类中效率...

    hibernate_reference中文文档.pdf

    - **7.5.1 一对多 (one to many)/多对一 (many to one)**:说明使用连接表的双向一对多/多对一关联映射。 - **7.5.2 一对一 (one to one)**:介绍使用连接表的双向一对一关联映射。 - **7.5.3 多对多 (many-to-...

    Hibernate3+中文参考文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

    hibernate3.04中文文档.chm

    20.4. 查询缓存(The Query Cache) 20.5. 理解集合性能(Understanding Collection performance) 20.5.1. 分类(Taxonomy) 20.5.2. Lists, maps 和sets用于更新效率最高 20.5.3. Bag和list是反向集合类中...

    Hibernate参考文档

    19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率...

Global site tag (gtag.js) - Google Analytics