Hibernate 中的迫切左外连接

1.迫切左外连接:Left join fetch

采用这个检索策略的话,list()方法返回的集合中存放的是实体对象的引用,而且每个实体对象关联的对象也都会被初始化,因此也会存放所有关联对象的实体对象。

例如:

有以下两个实体类:

  1. Employee
  2. Department

    Employee 中有一个 Department 类型的属性(存在多对一关系),如果我们获取 employee 表中所有的数据:FROM Employee,我们可以获取到所有的 Employee 实体对象,但是其关联的 Department 却未被初始化,如在 session 关闭后去使用其 Department 对象,会抛出懒加载异常。


如果需要在获取 Employee 对象时就初始化其关联的 Department 对象,需要使用迫切左外连接(或者直接在映射关系时加上 lazy=”false” 关闭懒加载):


    String hql = "FROM Employee e LEFT JOIN FETCH e.department";

通过上面的 hql 使用 LEFT JOIN FETCH 在获取实体对象时,每个实体对象关联的对象也都会被初始化,因此也会存放所有关联对象的实体对象。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值