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"]);
      
     }