public class QueryResultPackageTest { @Test public void test1(){ Session session=HibernateUtil.getInstance().openSession(); session.beginTransaction(); String hql="select e.id,e.name,e.salay,e.dept.name,e.dept.sn,e.dept.address.city from Employee e"; List<Object[]> ret=session.createQuery(hql).list(); for(Object[] os:ret){ System.out.println(Arrays.toString(os)); } session.getTransaction().commit(); session.close(); } @Test public void test2(){ Session session=HibernateUtil.getInstance().openSession(); session.beginTransaction(); //使用new list把每一行查询结果包装成一个List对象 String hql="select new list(e.id,e.name,e.salay,e.dept.name,e.dept.sn,e.dept.address.city)from Employee e"; List<List<Object>> ret=session.createQuery(hql).list(); for(List<Object>os:ret){ System.out.println(os); } session.getTransaction().commit(); session.close(); } @Test public void test3(){ Session session=HibernateUtil.getInstance().openSession(); session.beginTransaction(); String hql="select new MAP(e.id as eid,e.name as ename,e.salay as esalay,e.dept.name as dname,e.dept.sn as dsn,e.dept.address.city as city)from Employee e"; @SuppressWarnings("unchecked") List<Map<String,Object>> ret=session.createQuery(hql).list(); for(Map<String,Object> os:ret){ System.out.println(os); } session.getTransaction().commit(); session.close(); }
创建一个EmployeeVO来存放结果集
public class EmployeeVO { private Long id; private String name; private BigDecimal salay; private String deptName; private String deptSn; private String city;
省略set/get方法还有构造方法
@Test public void test4(){ Session session=HibernateUtil.getInstance().openSession(); session.beginTransaction(); //直接通过new VO对象来把结果集包装成一个VO对象 //注意:VO对象需要一个构造方法,这个构造方法的参数值顺序需要和查询顺序匹配 String hql="SELECT NEW query.EmployeeVO(e.id,e.name,e.salay,e.dept.name,e.dept.sn,e.dept.address.city)from Employee e"; List<EmployeeVO>ret=session.createQuery(hql).list(); for(EmployeeVO os:ret){ System.out.println(os); } session.getTransaction().commit(); session.close(); }