HQL简单属性和实体对象查询
2011-08-12 09:52
225 查看
在HQL中,关键字不区分大小写,但属性名和类名区分大小写。
1.简单属性查询
(1)单一属性查询:返回的结果集为属性列表,其类型与实体中该属性的类型一致
返回结果集List中是name集合,其类型与实体类Student中name的类型保持一致。
(2)多个属性查询:返回的结果集为对象数组,数组元素的类型与对应实体中的属性类型一致,其长度取决于select中属性的个数。
这样遍历得到的是对象数组Object【】,其第一个元素为id,即下标值为0,第二个元素为name,下标值为1.
如何得到Student类型呢,采用HQL动态实例化Student对象,
首先为Student提供无参的构造函数,和一个带有id和name参数的构造函数,从而有
这样遍历得到的是Student对象。
(3)可以使用别名
2.实体对象查询
(1)不使用select
返回的结果为实体对象集合
(2)不使用select,用别名
返回的也是实体对象集合
(3)使用select,必须用别名
返回的也是实体对象集合
但是使用select * from Student 是不支持的。
(4)使用Iterator接口
注意 iterate和list的区别:
A:使用iterate查询,在默认情况下利用缓存数据,若缓存中不存在相应记录,会出现N+1问题。
所谓“1”:即首先发出一条查询对象id列表的sql语句;
所谓”N“:根据id到缓存中查询,若缓存中没有与之匹配的记录,则根据id发出相应的sql查询语句。
B:list每次都会发出sql查询语句,会向缓存中放入数据,但默认情况下不利用缓存中的数据。
1.简单属性查询
(1)单一属性查询:返回的结果集为属性列表,其类型与实体中该属性的类型一致
List students=session.createQuery("select name from Student").list();
返回结果集List中是name集合,其类型与实体类Student中name的类型保持一致。
(2)多个属性查询:返回的结果集为对象数组,数组元素的类型与对应实体中的属性类型一致,其长度取决于select中属性的个数。
List students=session.createQuery("select id,name from Student").list();
这样遍历得到的是对象数组Object【】,其第一个元素为id,即下标值为0,第二个元素为name,下标值为1.
如何得到Student类型呢,采用HQL动态实例化Student对象,
首先为Student提供无参的构造函数,和一个带有id和name参数的构造函数,从而有
List students=session.createQuery("select new Student(id,name) from Student").list();
这样遍历得到的是Student对象。
(3)可以使用别名
List students=session.createQuery("select s.id,s.name from Student 【as】 s").list();
2.实体对象查询
(1)不使用select
List students=session.createQuery(" from Student").list();
返回的结果为实体对象集合
(2)不使用select,用别名
List students=session.createQuery(" from Student 【as】 s").list();
返回的也是实体对象集合
(3)使用select,必须用别名
List students=session.createQuery(" select s from Student 【as】 s").list();
返回的也是实体对象集合
但是使用select * from Student 是不支持的。
(4)使用Iterator接口
Iterator iter=session.createQuery(" from Student").iterate();
注意 iterate和list的区别:
A:使用iterate查询,在默认情况下利用缓存数据,若缓存中不存在相应记录,会出现N+1问题。
所谓“1”:即首先发出一条查询对象id列表的sql语句;
所谓”N“:根据id到缓存中查询,若缓存中没有与之匹配的记录,则根据id发出相应的sql查询语句。
B:list每次都会发出sql查询语句,会向缓存中放入数据,但默认情况下不利用缓存中的数据。
相关文章推荐
- Hibernate笔记:HQL查询总结(一)——简单属性查询和实体对象查询
- 【hibernate】——hql简单属性+实体对象查询
- 【hibernate】——hql简单属性+实体对象查询
- Hibernate3学习笔记(9)—— HQL实现查询对象部分属性
- 《Entity Framework 6 Recipes》中文翻译系列 (24) ------ 第五章 加载实体和导航属性之查询内存对象
- HQL简单属性查询
- Hibernate学习28 -- Hibernate查询语言(HQL)2 -- 简单属性查询
- HQL实体对象查询
- Hibernate学习29 -- Hibernate查询语言(HQL)3 -- 实体对象查询
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- 【hibernate进阶】hql简单属性查询
- Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中
- 【Hibernate步步为营】--hql查询之实体对象查询
- Java中使用hql,sql查询返回的list<Object> 转成需要的实体对象--方法讲解!
- hql 查询返回某个实体对象的泛型方法
- hql语句实现查询对象部分属性
- hql语句实现查询对象部分属性
- HQL (一) 简单属性查询
- 实体转json串。能满足普通list的转换。。及一些些简单的对象.对象.属性的转换《还未完善--对象.集合》
- hql中关于一对多,根据数组里面某个对象的某个属性查询的方法总结。