HQL中投影查询即查询一个持久化类的一个或多个属性值(不包括全部属性值),则需要使用HQL的select子句。
1、查询持久化对象的单一属性值
为查询持久化对象的一个属性值,在select子句后跟查询的属性名
示例:
public void testShadowQuery(){
Session session = null;
session = HibernateUtils.getCurrentSession();
String hql = "select title from Guestbook";
Query query = session.createQuery(hql);
List<String> list = query.list();
session.close();
for(String title : list){
System.out.println(title);
}
}
2、查询持久化对象的多个属性值
如果要查询某个实体类的多个属性值(不包含所有属性值),在HQL中有3种方式实现:
(1)、在HQL语句的select后指定所要查询的多个属性名
如:select title,content,name from Guestbook
(2)、如果持久化类提供适当的构造方法,则可以使用HQL查询时直接指定返回新建一个该持久类的对象。
如:select new Guest(id,name,email) from Guestbook
(3)、在HQL中使用Map类型
如:select new map(id,name,email) from Guestbook
同时Query对象的list()方法返回一个包含多个Map对象的集合,所以在获取每一个Map集合的值时的用法如下:
for(Map map :list){
System.out.println(map.get["0"]);
System.out.println(map.get[“1”]);
System.out.println(map.get["2"]);
}
1、查询持久化对象的单一属性值
为查询持久化对象的一个属性值,在select子句后跟查询的属性名
示例:
public void testShadowQuery(){
Session session = null;
session = HibernateUtils.getCurrentSession();
String hql = "select title from Guestbook";
Query query = session.createQuery(hql);
List<String> list = query.list();
session.close();
for(String title : list){
System.out.println(title);
}
}
2、查询持久化对象的多个属性值
如果要查询某个实体类的多个属性值(不包含所有属性值),在HQL中有3种方式实现:
(1)、在HQL语句的select后指定所要查询的多个属性名
如:select title,content,name from Guestbook
(2)、如果持久化类提供适当的构造方法,则可以使用HQL查询时直接指定返回新建一个该持久类的对象。
如:select new Guest(id,name,email) from Guestbook
(3)、在HQL中使用Map类型
如:select new map(id,name,email) from Guestbook
同时Query对象的list()方法返回一个包含多个Map对象的集合,所以在获取每一个Map集合的值时的用法如下:
for(Map map :list){
System.out.println(map.get["0"]);
System.out.println(map.get[“1”]);
System.out.println(map.get["2"]);
}
转载于:https://blog.51cto.com/wujuxiang/403700