如何通用解析Hibernate返回结果集List 5

最近,使用Hibernate由于需要大量的解析返回的结果集合List,将所需的结果按照一个HashMap<字段名,字段值>的形式,由于结果集有多条,所以需要将这个Hash... 最近,使用Hibernate由于需要大量的解析返回的结果集合List,将所需的结果按照一个HashMap<字段名,字段值>的形式,由于结果集有多

条,所以需要将这个HashMap再放入一个ArrayList中。如此就可以循环ArrayList再通过字段名从HashMap中取得所需要的值。
但是现在Hibernate返回的结果集List结构并不固定
表Student和Teacher两张表,其中Teacher和Student是一对多的关系,Student中一个t_id的字段引用Teacher的主键;
Teacher 有字段T_ID,T_NAME Student有字段S_ID,S_NAME,T_ID
hql="select a from Teacher a";此时List里面仅仅是以List->Object(Teacher)的形式进行封装
hql="select a.name from Teacher a";此时List里面就封装的是基本类型Object(String)
hql="select a,b.name from Teacher a,Student b where a.id=b.tId";此时List里面封装的就是一个Object[]{Teacher,String}
那么我如何通过一个方法去解析这些List让他们以
HashMap htm=new HashMap();
ArrayList<Object[]) arr=new ArrayList();
if(list.size>0){
for(Object[] obj : list){
Teacher t=(Teacher)obj[0];
String sName=(String)obj[1];
htm.put("T_ID",t.getTId);
htm.put("T_Name",t.getTName);
htm.put("S_NAME",sName);
arr.add(htm);
}
}
这儿我是假设List里面装的是Object数组,而且这个方法也不是通用的,如果是其他的hql语句这个解析方法就不适用了。
那么我就需要一个通用的方法去解析Hibernate返回的结果集List,注意这儿只需要能够解析Hibernate返回的就够了。当然万能更好。
求各位达人们帮帮忙。
现在已经写好了针对单个对象的通用方法,但是如果这个List里面装的是Object(String)就没办法得到对应的字段名,还有List封装Object[]{}的也没办法解析带基本类型的,因为List里面如果是基本类型,就根本没办法得到对象,就没有办法通过反射去取对应的字段名。
有哪位兄弟给个解决方案
展开
 我来答
w1985g
2010-06-02 · TA获得超过1633个赞
知道小有建树答主
回答量:1190
采纳率:100%
帮助的人:1036万
展开全部
查询不同的表 返回不同的对象集合,字段都不一样,应该没办法做万能的HashMap吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eideeide
2010-06-04 · 超过18用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:42.8万
展开全部
用SQL就写一条就可以了,你用连表查询,下面介绍方法

public Map<String, Object> 方法名{
。。。
List<Map<String, Object>> list = Query query = session.createSQLQuery("SELECT T.T_ID \"T_ID\", T.T_NAME \"T_NAME\", S.S_NAME \"S_NAME\" FROM TEACHER T, STUDENT S WHERE S.S_ID = T.T_ID " ).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();;
return list;
}
注意这里用的是createSQLQuery,这样查询出来的是MAP类型并且key都是自定义的【\"T_ID\",】等,
Transformers.ALIAS_TO_ENTITY_MAP是以MAP类型返回值
不妨试一试

如果key就是字段名,那就更简单了,把所有\"key\"都删除了,返回的KEY全是大写的字段名
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mars_lq
2010-06-02 · TA获得超过222个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:149万
展开全部
针对每一个来写比较好,你那个Object的想法倒是不错,不过,估计行不通....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式