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();
}