关联(Association)与连接(Join)
来源:互联网 发布:娶洋妞 知乎 编辑:程序博客网 时间:2024/05/01 17:40
我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名, 这时要使用关键字join
。
from Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten
from Cat as cat left join cat.mate.kittens as kittens
from Formula form full join form.parameter param
受支持的连接类型是从ANSI SQL中借鉴来的。
-
inner join
(内连接) -
left outer join
(左外连接) -
right outer join
(右外连接) -
full join
(全连接,并不常用)
语句inner join
, left outer join
以及 right outer join
可以简写。
from Cat as cat join cat.mate as mate left join cat.kittens as kitten
通过HQL的with
关键字,你可以提供额外的join条件。
from Cat as cat left join cat.kittens as kitten with kitten.bodyWeight > 10.0
还有,一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接 与延迟声明(lazy declarations).
from Cat as cat inner join fetch cat.mate left join fetch cat.kittens
一个fetch连接通常不需要被指定别名, 因为相关联的对象不应当被用在 where
子句 (或其它任何子句)中。同时,相关联的对象 并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。
from Cat as cat inner join fetch cat.mate left join fetch cat.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 Document fetch all properties order by name
from Document doc fetch all properties where lower(doc.name) like '%cats%'
- 关联(Association)与连接(Join)
- mysql自连接与join关联
- MyBatis对象关联关系---- association与collection
- Mybatis association与collection关联查询
- 关联映射中collection与association区别
- 找出词与词之间的关联(association relationship/rule)
- Association Mining(关联挖掘)
- 连接、关联、JOIN、APPLY(SQL Server)
- 单向关联(Unidirectional association)
- 关联规则(Association Rules)
- Hibernate Criteria 关联查询(inner join 与 left join)
- NHibernate实践总结(三)HQL的theta-style join对无关联实体的连接与应用
- MyBatis系列教程(四)--实现表数据与对象的关联关系(Association RelationShip)
- 海量数据挖掘MMDS week2: Association Rules关联规则与频繁项集挖掘
- 关联规则(association rule)挖掘与频繁项集挖掘算法Apriori Java实现
- Hql 左连接 (left join 非表关联)
- mysql left join 左连接查询关联n多张表
- 举例辨析关联(Association)中的几个概念
- 我真的不知道 你是
- from子句
- 浅谈三层结构原理与用意
- .NET动态生成PDF文件(利用iTextSharp)
- 用C++实现时间的加减运算
- 关联(Association)与连接(Join)
- Hibernate检索策略总结
- Sql Server 读取 Excel/Txt 文件
- 聚集函数
- 工具发布!QQ空间阅读与备份工具
- Ehcache配置文件的详细说明
- ADO.net 里面获取返回值的方法为(c#):
- 田亮叶一茜婚礼 新娘两次感动落泪(图)
- Oracle基础知识---Oracle中 Alter Table 语句的使用