问题描述
tableA:oidonamestatustableB:cidoiddateselecta.oid,a.oname,b.cid,b.datefromtableAa,tableBbwherea.oid=b.oidanda.status=1orderbyb.date操作TableA,TableB两个对象,把查询结果封装成一个vo对象Info,执行上一个查询语句的功能该怎么写
解决方案
解决方案二:
session.createSQLQuery("selecta.oid,a.oname,b.cid,b.datefromtableAa,tableBbwherea.oid=b.oidanda.status=1orderbyb.date")
解决方案三:
1stsess.createSQLQuery("selecta.oid,a.oname,b.cid,b.datefromtableAa,tableBbwhere"+"a.oid=b.oidanda.status=1orderbyb.date").setResultTransformer(Transformers.aliasToBean(Vo.class));这个查询可以返回不受hibernate管理的实体,被实例化并且将oid、oname、cid、date的值注入到Vo对应的属性或者字段(Vo中的成员名字跟这个要一致);2ndsession.createSQLQuery("selecta.oid,a.oname,b.cid,b.datefromtableAa,tableBbwherea.oid=b.oidanda.status=1orderbyb.date").list();将返回一个Object数组(Object[])组成的List,遍历List封装成Vo即可。List<Vo>listVo=newArrayList<Vo>();for(Object[]os:list){Stringoid=(String)os[0];Stringoname=(String)os[1];Stringcid=(String)os[2];Datedate=(Date)os[3];Vovo=newVo(oid,oname,cid,date);listVo.add(vo);}
解决方案四:
很好玩的啊
解决方案五:
如果这两个表有关联你只要查出来一个表就行了。用.get方法得到里面的数据。。hibernate我感觉联合查询用处不大。。。
解决方案六:
引用4楼zyking1987的回复:
如果这两个表有关联你只要查出来一个表就行了。用.get方法得到里面的数据。。hibernate我感觉联合查询用处不大。。。
hibernate在单表查询中sql语句可以自动生成,在联表查询的时候如果查询条件用到了两个表,sql语句就得自己写了是么?简单联表查询的时候,在xml中配置了对应实体对象之间的关系,可以通过查一个表把另一个表给带出来,但是如果两个表的列都很多,而我们只需要几个字段的时候,也得手动写sql语句,否则会将两个表的所有列都给查出来是么?
解决方案七:
该回复于2011-04-15 17:06:13被版主删除
解决方案八:
想问类似的问题
解决方案九:
该回复于2011-04-15 17:12:22被版主删除
解决方案十:
Queryq=session.createQuery("selectnewInfo(a.oid,a.oname,b.cid,b.date)fromtableAa,tableBbwherea.oid=b.oidanda.status=1orderbyb.date");for(Objecto:q.list()){Infoinfo=(Info)o;}