要是没有关联的话就不用用连接啦,连接是指已经存在外键之类的关联,然后再 join fetch的。

解决方案 »

  1.   

    1.需要关联,hql是查询实体对象,但你真正关联表的还是外键字段,当然是通过配置自己生成的2.试试就知道了既然可以用where指定条件,何必要子查询
      

  2.   

    补充一下针对子查询,hibernate有子查询抓取策略
      

  3.   

      问题1:不需要。但如果数据库中没有外键关联,使用left join的效率将奇低
      问题2:不知道。
      

  4.   

    1如果两个表没有关联,请问你的categorys是怎么出来的,如果用hql来做关联就要满足这个原理,但是你可以不用关联 from A a,B b where a.xx =b.xx2 HQL支持where中的子查询,但是不支持from中的子查询,也不支持select中的子查询。
    但是jpa规范中已经将它们列入未来的一个实现,也就是说在hibernate或者ejb-ql的未来版本中会被实现!
      

  5.   

    对于2进行一点补充:可以通过配置hbm文件或者annotation注释来嵌入一个子查询
    用join标签或者formula标签,或者formula注解,
    详细内容请查看一下hibernate中文参考手册或者hibernate 实战
      

  6.   

    如果两个表没有建立关联关系是否可在hql中实现外连接呢? 
    好像不能
    这样是否合法?
    不合法
      

  7.   

    感谢大家的回答,
    我现在已经搞明白hibernate没有我想象的强大,其实也非超难用。
    我前些天忙于换工作,忘了结贴了。现在结帐啦。