注:原创作品,分享以供交流学习,转载请注明出处
本博文实例假定:
1,student_info是数据库中的一张表的名称。
第一:sql的标量查询(使用addScalar实现)
1,
session.createSQLQuery("select * from student_info").list();
结果类型:List<Object[]>
注意:object数组中元素的顺序和类型是hibernate根据ResultSetMetadata
来判断的(当然一旦访问ResultSetMetadata性能就会大大降低)
2.
session.createSQLQuery("select * from student_info")
.addScalar("name",StandardBasicTypes.STRING)
.list();
结果类型:List<String>
注意:此时hibernate不会再去根据ResultSetMetadata来获取列信息,而是
直接从ResultSet中取出name列的值,并把name列的数据类型当成zifu
串处理,因此即使用了*作为查询的字段列表,但是hibernate查询的
结果也知识name阻断所组成的列表。
3.
session.createSQLQuery("select * from student_info")
.addScalar("name")
.list();
结果类型:List<String>
注意:此时hibernate会再去根据ResultSetMetadata来获取列信息,
从ResultSet中取出name列的值,并根据ResultSetMetadata来确定
name列的类型。因此这种效率低下,除非是在不知道列的类型,不要
使用这种类型,尽量使用2的方式。
3.
session.createSQLQuery("select * from student_info")
.addScalar("name",StandardBasicTypes.STRING)
.addScalar("student_id",StandardBasicTypes.INTEGER)
.list();
结果类型:List<Object[]>
注意:集合元素中一次存放name,id
总结:addScalar的两个作用:
1,指定查询结果包含哪些数据列(没有被addScalar选出的列不会包含在查询结果中)
1,指定查询结果数据列的数据类型。
第二:sql的实体查询
1.
session.createSQLQuery("select * from student_info")
.addEntity(Student.class)
.list();
结果类型:List<Student>
注意:要想把结果数据组装成一个对象,必须选出表中的左右的列,如果表中含有
外键,也必须选择出来,最简单的方法就是用*
2.
session.createSQLQuery("select sf.*,s.* from student_info as sf,student as s
where sf.id = s.id")
.addEntity("sf",StudentInfo.class)
.addEntity("s",Student.class)
.list();
结果类型:List<Object[]>
注意:集合中的元素是StudentInfo,Student组成的数组。
分享到:
相关推荐
原生SQL查询也可以返回单一的标量值或标量与实体的组合。例如,计算最大体重: ```java Double maxWeight = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat") .addScalar(...
总结来说,Hibernate的SQLQuery接口提供了丰富的功能,支持本地SQL查询,处理字段冲突,加载关联对象,返回标量值或混合结果,以及利用结果集映射和命名SQL查询来提高代码的可读性和复用性。在实际开发中,灵活运用...
Hibernate 的 createSQLQuery 是 Hibernate 框架中的一种强大且灵活的查询机制,它允许开发者使用原生 SQL 语句来查询数据库。下面是 createSQLQuery 的几种常见用法: 一、简单的 SQLQuery 在最简单的情况下,...
实体查询(Entity queries) ------------------------- 上面的查询都是返回标量值的,也就是从 resultset 中返回的“裸”数据。下面展示如何通过 addEntity() 让原生查询返回实体对象,例如: sess....
4.3.3 给查询命名实体 4.3.4 声明包名称 4.3.5 用引号把SQL标识符括起来 4.3.6 实现命名约定 4.4 细粒度的模型和映射 4.4.1 映射基础属性 4.4.2 映射组件 4.5 小结 第5章 继承和...
- **实体查询**:展示如何查询并返回实体对象。 - **处理关联和集合**:说明如何在原生 SQL 查询中处理关联对象和集合。 - **返回多个实体**:介绍如何在一个查询中返回多个实体类型。 - **返回非管理实体**:解释...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed ...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed ...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed ...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.4.1. 别名和属性引用(Alias and property ...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed ...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 ...
标量查询(Scalar query) 9.3.2. 查询接口(Query interface) 9.3.3. 可滚动迭代(Scrollable iteration) 9.3.4. 过滤集合类(Filtering collections) 9.3.5. 条件查询 9.3.6. 使用本地SQL的查询...
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....
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...
16.1.2. 实体查询(Entity queries) 16.1.3. 处理关联和集合类(Handling associations and collections) 16.1.4. 返回多个实体(Returning multiple entities) 16.1.4.1. 别名和属性引用(Alias and property ...
14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 ...
15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...