前几天,在进行Hibernate多表查询时,遇到了从Object对象中取出其它对象的问题,问题如下:
以下两个类:
User.class
public class User{
private String userid;
private String uname;
private String upass;
...(getter\setter方法、构造方法)
}
Department.class
public class Department{
private String departNo;//部门编号
private String departName;//部门名
...(getter\setter方法、构造方法)
}
String hql = "FROM User u,Department d WHERE u.userid = d.userid";//构建HQL
Query qr = session.createQuery(hql);//创建HQL查询
List list = qr.list();//执行查询
return list;
这样查询的结果是一个Object[]数组,Object数组中是Object对象,而Object对象中封装的是User对象和Department对象。
我尝试过:以上的hql和下面:
String hql = "SELECT u,d FROM User u,Department d WHERE u.userid = d.userid "
查询来的结果相同,可以发现
String hql = "FROM User u,Department d WHERE u.userid = d.userid "
就是把所有的记录查询出来,再封装到对应的对象中,再封装到Object对象。哈哈。
那么问题来了?怎样取出User对象和Department对象呢?
1.先遍历Object[]数组,得到Object对象object。
2.Object[] objs = (Object[])object;在把Object对象强转成Object数组。
3.所以,User user = (User)objs[0]; Department department = (Department)objs[1];
这样就取出来了。