Hibernate中left join,right join等用法的详解
来源:互联网 发布:华为云服务器默认端口 编辑:程序博客网 时间:2024/05/16 18:15
inner join(内连接)
left outer join(左外连接)
right outer join(右外连接)
full join (全连接,并不常用)
语句inner join, left outer join 以及 right outer join 可以简写。简写的方法可以参考:from Dog as dog join dog.mate as mate left join dog.kittens as kitten通过HQL的with关键字,你可以提供额外的join条件。例如:from Dog as dog left join dog.kittens as kitten with kitten.bodyWeight > 10.0
还有,一个”fetch”连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接 与延迟声明(lazy declarations).如:from Dog as dog inner join fetch dog.mate left join fetch dog.kittens
一个fetch连接通常不需要被指定别名, 因为相关联的对象不应当被用在 where 子句 (或其它任何子句)中。同时,相关联的对象 并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。如:from Dog as dog inner join fetch dog.mate left join fetch dog.kittens child left join fetch child.kittens
假若使用iterate()(迭代器)来调用查询,请注意fetch构造是不能使用的(scroll() 可以使用)。fetch也不应该与setMaxResults() 或setFirstResult()共用,这是因为这些操作是基于结果集的,而在预先抓取集合类时可能包含重复的数据,也就是说无法预先知道精确的行数。fetch还不能与独立的 with条件一起使用。通过在一次查询中fetch多个集合,可以制造出笛卡尔积,因此请多加注意。对bag映射来说,同时join fetch多个集合角色可能在某些情况下给出并非预期的结果,也请小心。最后注意,使用full join fetch 与 right join fetch是没有意义的。
如果你使用属性级别的延迟获取(lazy fetching)(这是通过重新编写字节码实现的),可以使用 fetch all properties 来强制Hibernate立即取得那些原本需要延迟加载的属性(在第一个查询中)。
例如:
from DocFile fetch all properties order by name
from DocFile df fetch all properties where lower(df.name) like ”%dogs%”
- Hibernate中left join,right join等用法的详解
- hibernate 中left join 与left join fetch ,right join与right join fetch 等的区别
- mysql中left join,right join,inner join,outer join的用法详解【转】
- mysql中left join,right join,inner join,outer join的用法详解
- mysql中left join,right join,inner join,outer join 用法详解
- left join,right join,inner join,outer join的用法
- sql中left join(left outer join)、inner join的使用,right join(right outer join)的用法和left join的相反就可以了。
- SQL语句中Left join,right join,inner join用法
- SQL语句中Left join,right join,inner join用法
- sql中 inner join, left join, right join 用法
- oracle中left join,right join,inner join用法
- mysql中left join,right join,inner join用法
- mysql中left join right join inner join用法
- mysql的left join和right join和inner join等表联接详解
- inner join,left join,right join 三者的用法
- mysql的left join,right join,inner join用法分析
- [MySql]多表联查:join、left join、right join的用法
- 数据库表的连接(Left join , Right Join, Inner Join)用法详解
- Codeforces Gym 100379L Game with a string 博弈+交互题
- Tomcat中常见线程说明
- Android Support v4、v7、v13 介绍
- Android Studio如何发布APK
- CentOS上常用的命令汇总
- Hibernate中left join,right join等用法的详解
- Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点
- 泡泡堂 DirectX11 Demo 2016.8.14 v1.2更新
- 30个后台管理系统模板
- iOS多线程GCD
- Java垃圾回收机制
- 条款25 考虑写出一个不抛异常的swap函数
- XCode自动注释插件
- 如何在spring中获取request对象