有三个表A,B,C
public class A{
private int aid;
private B b;
}public class B{
private int bid;
private C c;
private Set as = new HashSet();
}public class C{
private cid;
private Set b = new HashSet();
}
我现在想查询出A的所有集合,其中A中的b属性被查出来,B中的c属性被查出来不知道怎么弄HQL一点也不通,希望高手帮帮忙,谢谢顺便讲一讲fetch在这里有没有用?
public class A{
private int aid;
private B b;
}public class B{
private int bid;
private C c;
private Set as = new HashSet();
}public class C{
private cid;
private Set b = new HashSet();
}
我现在想查询出A的所有集合,其中A中的b属性被查出来,B中的c属性被查出来不知道怎么弄HQL一点也不通,希望高手帮帮忙,谢谢顺便讲一讲fetch在这里有没有用?
解决方案 »
- request获取当前页面url的问题,求高手指点!
- 接基于web2.0的大型网站开发,java,jsp,servlet,hibernate,spring,struts2.0 mysql,oracle
- SessionFactory无法创建为什么?
- 关于Spring getHibernateTemplate().getSessionFactory().openSession()我应用的时候造成TOMCAT死掉的问题。请大家帮忙看看
- jsp问题
- spring mvc 中文乱码问题
- 怎么样在内存中实现北京地铁结构图
- 【高分求助】 iReport做好的报表怎么样和JB的程序连接?分不够可另加
- 有关sql server 2000 jdbc 设置的一个菜鸟问题
- 关于jbulider7的问题!(给100分)
- 统计运行次数
- struts2 form的method 默认值是post还是什么
拿到A以后,用get方法就能拿到B,B里的get方法可以拿到C。这不是就达到你的目的了吗。
你用fetch=join无非是怕懒加载失败吧,你可以在拿到A以后直接用Hibernate.initialize()方法初始化B和C。
hibernate会帮你填充关联表的数据。
这是用hibernate的好处之一啊,还不大大利用,呵呵。
需要在配置文件中表明:lazy="false"
然后写HQL:String hql = "from A";
这样的话你迭代A的时候可以直接用getB().getC()等等
如果楼主想要用Hql的话,需要知道你表之间的关系,至少是多对一或者是一对一,只要在where条件里面,把关联的主键做相等,例如
from A where A.bid=b.id and b.cid=c.id
我不太记得了 不知道这个HQL写对没
我一般喜欢这么写
From A a,B b,C c where a.aid=b.bid,b.bid=c.cid