当前位置:编程学习 > JAVA >>

请教Hibernate 多表查询

一个合同表里有7个外键,对应7张表 ,用Hibernate 语句怎么写查询语句阿  --------------------编程问答-------------------- 你是想查出多个表的数据形成一个VO吗?
先建一个VO,里面的属性是你要想查询的多表的所有字段。
构造函数这么写
VO(field1,field2,.....)
用hql吧
select new VO(field1,field2,.....) from po1,po2,po3,.... where po1.c1=po2.c2 and ...
大概是这样,hql只是随手一写,需要斟酌一下。 --------------------编程问答-------------------- 用视图做就可以啦。 --------------------编程问答-------------------- Hibernate里面有外键,不就包含他们的实体对象了么,你查出一主键表,直接就可以点出他们的实体,自然也就可以点出他们的属性,为什么要那么麻烦,HQL:From主键表 搞定了! --------------------编程问答-------------------- hibernate 里面定义了外键关联,你只需要查询出一张主键的表,就可以通过主键表来查出他所包含的实体,在查出他们对应的属性就可以了。。。 --------------------编程问答-------------------- 那要看你需要查什么。 --------------------编程问答-------------------- 学习中 求大虾指教 --------------------编程问答-------------------- 建议用hql比较方便 --------------------编程问答-------------------- 不一定要用hql,可以用SQL --------------------编程问答-------------------- hiernate有映射关系,只要配置好,就能 --------------------编程问答-------------------- one to many 配置,只要查主表就能得到其他7张表的数据了 --------------------编程问答-------------------- 楼上几位的方法方便是方便,问题是得到主键表中的数据后,遍历一条记录就得查询七次,效率极低! --------------------编程问答-------------------- left join 那7个表,匹配where条件连接就可以。 --------------------编程问答-------------------- 既然用hibernate了就要用其长处,用多对多,一对一关系配置起来,不要去写HQL了 --------------------编程问答-------------------- --------------------编程问答-------------------- 可以使用sql语句,一次性查询出结果,然后得到的是List<Object[]>,其中的对象数组对应一条记录 --------------------编程问答--------------------
引用 11 楼  的回复:
楼上几位的方法方便是方便,问题是得到主键表中的数据后,遍历一条记录就得查询七次,效率极低!


你用hibernate的话就要用它的缓存机制,否则hibernate的效率就差远了

如果你想一次查询出来的话,建议写hql语句或sql语句去查 --------------------编程问答--------------------
引用 16 楼  的回复:
引用 11 楼  的回复:
楼上几位的方法方便是方便,问题是得到主键表中的数据后,遍历一条记录就得查询七次,效率极低!


你用hibernate的话就要用它的缓存机制,否则hibernate的效率就差远了

如果你想一次查询出来的话,建议写hql语句或sql语句去查

但如果用hibernate 一次查询的话,注意 把惰性加载设置成 true;
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,