Hibernate 查询返回结果集为对象数组后的取值方法

查询语句为Stringhql="selectb.*,r.usernamefromBuybleftjoinb.Registerrorderbybuytime";sessio... 查询语句为
String hql="select b.*,r.username from Buy b left join b.Register r order by buytime";
session.createQuery(hql);
第一个问题:上面的这两个语句有问题吗?正确的写法怎么写。
第二个问题:在页面上怎么取得查询结果,用struts2标签。
展开
 我来答
九书
2010-12-07 · TA获得超过418个赞
知道小有建树答主
回答量:374
采纳率:100%
帮助的人:94.9万
展开全部
建议这样写:
语句:
String hql = "from CLass1 as c1, Class2 as c2 where conditions....."
......

使用结果:
for(int i=0;i<resultList.size();i++){
Object obj = resultList.get(i);
Object[] objs = (Object[])obj;
CLass1 c1 = (CLass1 )objs[0];
CLass1 c2 = (CLass2 )objs[0];
.....
String c1name = c1.getUserName();
String c2name = c2.getUserName();

}

原则是不查单个类的属性,查类,从list中取出Object后转化成Object[],然后按照类出现在hql中的先后顺序,从Object[]中取得对应的类的实例,然后再取得各种数据。

注意下面: 查询出来的list中每个元素是Object,需要转化成Object[]后,再单独取不同的类。
Object obj = resultList.get(i);
Object[] objs = (Object[])obj;
CLass1 c1 = (CLass1 )objs[0];
CLass1 c2 = (CLass2 )objs[0];

以上
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ngc1987
2010-12-07 · TA获得超过290个赞
知道小有建树答主
回答量:134
采纳率:100%
帮助的人:111万
展开全部
String hql = "select b,r.username from Buy b left join b.Register r order by b.buytime";
for(Object[] obj:list){
String username = obj[1];
Buy buy = obj[0];
}

不知道可以帮到你不
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友43c78f0
2010-12-07 · 超过17用户采纳过TA的回答
知道答主
回答量:75
采纳率:50%
帮助的人:35.5万
展开全部
第一个问题:上面的这两个语句有问题吗?正确的写法怎么写。
这个语句有点问题,因为查询的结果是对象的集合,所以应该保证有相应的对象类型来保存查询结果,如果你查询的是对象Buy,那么直接用Buy就能保存,但如果查询的结果是一个类Buy的对象再加上一个r.username的值,那么显然你缺少用于保存这个结果的对象,另外select b.* 这样的写法也不对,如果你需要b的所有字段,只需要这样"from Buy order by buytime "就可以了,因为这样可以得到Buy的对象集合,如果你需要b.Register里面的username只需要用获得的对象.Register.username就能得到了。

第二个问题:在页面上怎么取得查询结果,用struts2标签
要得到查询结果,首先在Action里面放入request里面的查询结果--对象集合(一般是ArrayList)
request.setAttribute("buylist", buylist);
取出来,用Struts2的遍历标签来遍历这个对象集合
<%@taglib prefix="s" uri="/struts-tags"%>
<s:iterator value="#request.buylist" status="statu" id="item">
<s:property value="Register.username" />
<s:property value="id" />
</s:iterator>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式