A(对于B,C是的一的一方) B(对于A是多的一方 对D是一的一方) D(对于B是多的一方 ) C(对于A 是多的一方)
根据A.ID取出ABCD 返回A的对象 求一条HQL         B(N)(1)  --D(N)
A (1)---
         C(N)大概是这样的  根据1的一方 把多的都取出来

解决方案 »

  1.   

    查询一个A出来就OK了~~~!!!
        不是根据a的id来么~~~那么就直接get获取A对象!
     A类中B对象就可以直接访问B的值!
    C跟D也一样、直接用对象、属性点出来就OK了!
      

  2.   

    这样会发很多条SQL 啊
    只需要一条 HQL 把 A中的B B中的C 取出来能行吗? 都是1对多的关系
      

  3.   

    select distinct A from TempType A 
    left join fetch  A.F
    left join fetch A.B
    left join fetch A.B.C (这句报错)
    where A.id=? 
     
    A和B,F是1对多的关系
    B,C是1对多的关系
    需要返回A对象
    有办法吗?
      

  4.   

    如楼主大意可理解为:
    A--->B,C   1对多
    B--->D     1对多
    先贴sql语句的:
    select a.id,a.name,b.name,c.name,d.name from A a,B b,C c,D d where a.id=b.aId and a.id=c.aId and b.id=d.bId and a.id="?" 
      

  5.   

    恩 SQL 是这样 就是想用HQL实现 不知道怎么写
      

  6.   

    你确定需要取D表中的数据?如果B表中的某一个Id在D表中不存在,这中情况怎么办,按上面的sql语句 B表中的该条数据 将不会被查询出来...
      

  7.   

    不懂  关联关系都配好了 都是 lazy 就是HQL这么写啊
      

  8.   

    就是one-to-many的关系,让多方放弃对关系的维护,设置inverse属性为true,在设置cascade就可以了。
    部门与员工就是典型的一对多。