Hibernate 多表查询

问题描述

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

时间: 2024-07-29 13:28:58

Hibernate 多表查询的相关文章

java-请问hibernate多表查询后如何映射到非持久化值对象

问题描述 请问hibernate多表查询后如何映射到非持久化值对象 请问hibernate多表查询后如何映射到非持久化值对象dao层使用的是泛型

hibernate多表查询返回object,有没有更好的解决办法

问题描述 hibernate多表查询返回object,有没有更好的解决办法 各位大神,您们好!小弟最近才开始学习hibernate,hibernate多表查询返回object的数组,有没有办法让它返回以主表为根对象的对象集合,根对象可以使用get子对象的方法获取到其它的从表映射的对象.fetch="join" <hibernate-mapping> <class name="com.zdsoft.entity.Sysuser" table=&quo

hibernate 多表查询 子查询

问题描述 hibernate 多表查询 子查询 hql="from Orderitem oi where oi.order.ordersid in (select o.ordersid from Order o where o.orderstatus in (:orderstatus) and o.users.userid in (:uid)"; 其中Order Orderitem,Users 都是表,我知道这样写不对,但是不知道该怎样写 其中Order 与Orderitem和User

hibernate多表查询问题

问题描述 hibernate多表查询时表名用pojo映射名和数据库表名有什么区别 问题补充:dujiaolianglong 写道 解决方案 hibernate 多对多POJO 设计问题 中间关系表不会生成实体 但是 中间表中还有一些字段 ,这样该怎么设计例如 用户表和 菜单表 是多对多 中间表中想加入生效日期和实效如期改怎么办

Hibernate多表查询

问题描述 public PageModel getPage(int currentPage, int pageSize) { String hql = "from Orders,Users,Orderstate where Orders.clientid = Users.userid and Orders.progress = Orderstate.stateid"; String count = "select count(*) from Orders"; Pag

hibernate 多表查询问题

问题描述 create table t_house(house_id int auto_increment primary key,house_name varchar(200),house_type_id int ....)create table t_house_type(house_type_id int primary key,house_type_name varchar(50),valid bit);house表的外键house_type_id对应t_house_type的主键,我要

关于Hibernate多表查询返回多个实体的取值问题

问题描述 public List findJianceXM(String bzdm,String tjdm){ Session s=super.getSession(); String sql="select distinct {b.*},{a.*} from 系统_污染物标准排放明细 a join 系统_监测项目 b on a.监测项目编号=b.监测项目编号 where a.标准代码=? and a.条件编码=?"; Query q=s.createSQLQuery(sql).add

用struts读取hibernate中多表查询结果

问题描述 我有两个表,课程表Course和成绩表Score,然后通过hibernate跨表查询获取学号为sco的学生的选课信息,由于要同时获取课程信息所以要用到Course表然后将结果用struts将得到的结果显示,应该用什么标签啊logic:iterator能够完成吗?hql为:fromCoursec,Scoreswheres.cno=c.noands.sno=:sco:(其中sno为学号,cno为课程号) 解决方案 解决方案二:利用视图,通过leftjoin课程表,把你想要的数据取到一张表中

sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符。

问题描述 sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符. 我使用多表查询,其中一个表与令一个表字段名相同,在hibernate界面后一个与前一个字段名相同的字段输出结果也与前一个字段名相同.前问在不改字段名的情况下有什么办法解决?(以下d.name与p.name输出结果一样,显然d.name输出结果是错的) select p.id,p.name,p.post_coefficient,d.name ,postType,a.areaName,p.postHour,p.s