hibernate的fetch=join的用法

如果fetch=join,那么hql语句里是不是也要写上outerjoin关联语句... 如果fetch=join,那么hql语句里是不是也要写上outer join关联语句 展开
 我来答
jonw000
2009-07-14 · 超过18用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:0
展开全部
不需要写,你既然有了fetch=join这个配置,那么hibernate在生成SQL语句时会自动级联到相关联的表
可以叫我表哥
推荐于2016-05-17 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
多对一属性,设置fetch="join"时.
1.hql查询时,要根据lazy是否等于true来,确定fetch="join"是否生效。如果lazy=true,这不会生效(和没有设置fetch="join"一样),需要你在hql语句中明确写明left join fetch 这个属性。如果lazy=false,则会生成再生成一个select语句单独查询把(和fetch=join的语意不符),查询的结果放到这个实体属性中。
2.如果是session方法(如get()会hibernate.initiaiztion())读取这个实体(entity1)时,都会生成对应的关联查询sql语句,把这个实体属性(property1)关联的表的信息一起查出来,存放到实体属性中。
3.并且其他实体(entity2)把本实体(entity1)作为他的属性时,初始化entity2实体的entity1属性时其property1也会一并加载。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nirenfu
2009-07-14 · TA获得超过1991个赞
知道小有建树答主
回答量:368
采纳率:0%
帮助的人:631万
展开全部
fetch=join,在关联对象抓取时,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询.其策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合,这些参数在Query中无效,当然在hql中也无效.所以在hql中是否加上outer join和fetch=join无关;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式