文档章节

Join和Fetch

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 471
阅读 27
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

      join和join fetch是两回事,不要搞混! join取自SQL的join概念。被join的对象一般会出现在select,where等其他子句中。因为join的目的在于要对被join的对象做处理,比如过滤等等。

     fetch则是抓取策略!它的作用就是指明root entity的哪些关联对象会在load这个entity时一同被load出来!因此,fetch的对象一般是没有别名的(如果需要进一步抓取集合单个元素的关联对象时就必须使用别名了),因为它不会以查询结果直接返回,也不会在where子句对它们进行过滤,它们是通过返回的root entity导航得到!

     fetch 也不应该与 setMaxResults() 或 setFirstResult() 共用,这是因为这些操作是基于结果集的,而在预先抓取集合类时可能包含重复的数据,也就是说无法预先知道精确的行数。

     fetch 还不能与独立的 with 条件一起使用。通过在一次查询中 fetch 多个集合,可以制造出笛卡尔积,因此请多加注意。

     对 bag 映射来说,同时 join fetch 多个集合角色可能在某些情况下给出并非预期的结果,也请小心。最后注意,使用 full join fetch 与 right join fetch 是没有意义的。

     超大集合不能一次性加载!它们的配制应该是:lazy必须为true! 动态抓取进也不应该抓取它!目前来看,只能提供额外的接口来分批获取集合。比如Forum.getThreads(int firstThreadIndex, int threadCount)

 

 

关于join与fetch的两个例子

 

 

 

 

 

 

 

 

 

 

 如果想过滤join和fetch中的重复对象,有两种方法:

1.将续集里封装成set.比如:Set noDupes = new LinkedHashSet(resultList))

2.使用DISTINCT。比如:select distinct i from Item i join fetch i.bids

猪刚烈

猪刚烈

粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
加载中
请先登录后再评论。
Hibernate中,left join、inner join以及left join fetch区别。

inner join(内连接) left outer join(左外连接) right outer join(右外连接) full join (全连接,并不常用) 语句inner join, left outer join 以及 right outer join 可以简写。 from...

TomatosX
2013/12/05
6
0
many-to-one fetch属性理解(借用网络)

上次用来 Eclipselink 的 JPA 优化 Query 需要用到 EclipseLink 自己的 eclipselink.left-join-fetch 特 有的hint name 来 实现。 今天在用到 Hibernate 的 一个 many-to-one 的 的时候看到它...

馨缘6009
2013/09/10
201
0
jpa的Join和Fetch

join和join fetch是两回事,不要搞混! join取自SQL的join概念。被join的对象一般会出现在select,where等其他子句中。因为join的目的在于要对被join的对象做处理,比如过滤等等。 fetch则是抓...

osc_jjrjgwdy
2019/03/06
1
0
Hibernate学习之检索策略(lazy,fetch,batch-size等)

https://github.com/mageSFC/myblog 马哥的 github 地址 https://github.com/mageSFC/myblog Hibernate学习之检索策略 马哥的 github 地址 https://github.com/mageSFC/myblog 检索数据时的2......

mmh19891113
2018/01/03
0
0
Hibernate的fetch (转)

fetch ,可以设置fetch = "select" 和 fetch = "join" 用一对多来举例: fetch = "select"是在查询的时候先查询出一端的实体,然后在根据一端的查询出多端的实体,会产生1+n条sql语句; fetch......

wsl_Mr
2013/08/02
28
0

没有更多内容

加载失败,请刷新页面

加载更多

十年饮冰,难凉热血.高考失利的同学们应该怎么学习

今天练车的时候跟几个朋友聊了会天,朋友考的学校都比较好,一个山大,一个山师大,一个上师大,让我个人夹杂在他们当中作为一个高考失败者实属自卑,虽然一直在尽力准备专升本,但是难免现阶...

osc_n3mzii7x
3分钟前
0
0
阿里巴巴矢量图标库的使用

在参考小米官网写页面你时,会发现小米中有很多的矢量图标,小米的图标或许是自己的,但是我们写页面时要用到矢量图标时怎么办,可以使用阿里提供的图标库 阿里矢量图标库网址:https://www...

osc_r9wwwi0j
3分钟前
0
0
JS数据结构与算法 - 排序(冒泡、选择、插入、归并、快排)

🌸本文主要内容: 各排序算法时间复杂度 js默认sort算法于各浏览器中的实现 1.冒泡排序 2.选择排序 3.插入排序 4.归并排序(含小动画) 5.快速排序(含小动画) 时间复杂度 O(1) < O(logn)...

osc_ccy4urvn
5分钟前
0
0
使用before和after属性选择器

最近仿造了小米官网写了一遍,可以说是完全把官网给写完了。 官网中有一个log切换的动态效果,有点把我卡住了找方法找了许久,然后用一个简单的方法实现了: 先了解一下before和after两个属性...

osc_k1o54uky
5分钟前
4
0
健身以及未来科技如何解绑教育,医疗,养老依赖于地段(房产)

疫情后,谁来颠覆套路满满的健身房?硬核解析异军突起的家庭健身——鲜榨财经_哔哩哔 目前的keep,或者 其他在线教育 存在的痛点 就是 可交互性 不强。 未来 通过 5G,各种完善的传感器,以及...

osc_bvzab11e
7分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部