一个很郁闷的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>
分享到:
相关推荐
HQL(Hibernate Query Language)是Hibernate提供的面向对象的查询语言,它支持多种连接查询类型,如内连接、迫切内连接、隐式内连接、左外连接、迫切左外连接、右外连接和交叉连接,提供了与SQL类似的查询功能。...
在本文中,我们将深入探讨Hibernate的使用心得,特别是关注HQL(Hibernate Query Language)查询的技巧和优化策略。HQL是Hibernate框架中用于操作对象关系映射的SQL方言,它允许开发者以面向对象的方式来编写查询,...
Hibernate Query Language(HQL)是 Hibernate 的查询语言。HQL 可以使用面向对象的方式来查询对象,可以使用 from、where、order by 等语句。 Criteria Queries Criteria Queries 是 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框架基础四:深入理解HQL多表检索...综上所述,通过深入了解HQL的多表检索技术、事务管理及隔离级别、查询优化方法以及合理的抓取策略配置,可以帮助开发者更高效地使用Hibernate框架处理复杂的业务逻辑。
- **HQL(Hibernate Query Language)**:类似于 SQL 的查询语言,支持面向对象的语法结构。 - **Criteria API**:提供了一种更灵活的构建查询条件的方法,可以动态地添加过滤条件。 ##### 3.3 事务管理 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是反向集合类中效率...
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是反向集合类中效率...
7. **HQL(Hibernate Query Language)**:介绍Hibernate特有的查询语言,类似于SQL,但更适应面向对象的编程风格,讲解如何编写HQL查询语句,以及参数绑定和结果集的处理。 8. **Caching缓存**:探讨Hibernate的...
4. Query:提供查询数据库的功能,包括HQL(Hibernate Query Language)和Criteria API。 三、Hibernate配置 - hibernate.cfg.xml:主要配置数据库连接信息、方言、缓存策略等。 - 映射文件:XML格式,定义实体类与...
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是反向集合类中效率...
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是反向集合类中效率...
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是反向集合类中效率...
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....
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是反向集合类中效率...
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是反向集合类中效率...
- **7.5.1 一对多 (one to many)/多对一 (many to one)**:说明使用连接表的双向一对多/多对一关联映射。 - **7.5.2 一对一 (one to one)**:介绍使用连接表的双向一对一关联映射。 - **7.5.3 多对多 (many-to-...
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是反向集合类中效率...
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是反向集合类中...
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是反向集合类中效率...