请教大家hibernate外连接的问题

To~fu 2008-12-18 10:11:04

请教大家几个问题:

问题1:如果我用Hql写一个左外连接,那么实现连接的两个表一定要有关联关系吗?比如:[from userinfo a left join a.categorys]。如果两个表没有建立关联关系是否可在hql中实现外连接呢?
问题2:我查过一些hibernate的资料,在hql中的子查询都是写在where条件后的,hql可不可以在from里面嵌入子查询呢?比如:[from userinfo a left join (select b from category b where b.categoryid = 1)].这样是否合法?

望大家不吝赐教,谢谢!
...全文
611 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
To~fu 2009-01-11
  • 打赏
  • 举报
回复
感谢大家的回答,
我现在已经搞明白hibernate没有我想象的强大,其实也非超难用。
我前些天忙于换工作,忘了结贴了。现在结帐啦。
西瓜 2008-12-21
  • 打赏
  • 举报
回复
如果两个表没有建立关联关系是否可在hql中实现外连接呢?
好像不能
这样是否合法?
不合法
Landor2004 2008-12-20
  • 打赏
  • 举报
回复
对于2进行一点补充:可以通过配置hbm文件或者annotation注释来嵌入一个子查询
用join标签或者formula标签,或者formula注解,
详细内容请查看一下hibernate中文参考手册或者hibernate 实战
Landor2004 2008-12-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 coflich 的帖子:]

请教大家几个问题:

问题1:如果我用Hql写一个左外连接,那么实现连接的两个表一定要有关联关系吗?比如:[from userinfo a left join a.categorys]。如果两个表没有建立关联关系是否可在hql中实现外连接呢?
问题2:我查过一些hibernate的资料,在hql中的子查询都是写在where条件后的,hql可不可以在from里面嵌入子查询呢?比如:[from userinfo a left join (select b from category b where b.categoryid = 1)].这样是否…
[/Quote]
1如果两个表没有关联,请问你的categorys是怎么出来的,如果用hql来做关联就要满足这个原理,但是你可以不用关联 from A a,B b where a.xx =b.xx

2 HQL支持where中的子查询,但是不支持from中的子查询,也不支持select中的子查询。
但是jpa规范中已经将它们列入未来的一个实现,也就是说在hibernate或者ejb-ql的未来版本中会被实现!
jabeginner 2008-12-19
  • 打赏
  • 举报
回复
要是没有关联的话就不用用连接啦,连接是指已经存在外键之类的关联,然后再 join fetch的。
hbwhwang 2008-12-19
  • 打赏
  • 举报
回复
问题1:不需要。但如果数据库中没有外键关联,使用left join的效率将奇低
问题2:不知道。
wj_18 2008-12-19
  • 打赏
  • 举报
回复
补充一下

针对子查询,hibernate有子查询抓取策略
wj_18 2008-12-19
  • 打赏
  • 举报
回复
1.需要关联,hql是查询实体对象,但你真正关联表的还是外键字段,当然是通过配置自己生成的

2.试试就知道了既然可以用where指定条件,何必要子查询

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧