hibernate 的left join fetch可以取出lazy对象

hibernate 的left join fetch可以取出lazy对象

 

当你在one-to-many的时候,设置lazy=true时,取对象的时候会使用延迟加载。

但是你可以使用left join fetch强制取出lazy对象 

 

一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接 与延迟声明(lazy declarations). 

 

一个fetch连接通常不需要被指定别名, 因为相关联的对象不应当被用在 where 子句 (或其它任何子句)中。

同时,相关联的对象 并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。

 

最后注意,使用full join fetch 与 right join fetch是没有意义的。

 

如果你使用属性级别的延迟获取(lazy fetching)(这是通过重新编写字节码实现的),

可以使用 fetch all properties 来强制Hibernate立即取得那些原本需要延迟加载的属性(在第一个查询中)。

 

你可以在lazy="true"的情况下把fetch去掉,就会报异常. 当然,如果lazy="false"就不需要fetch了 

 

 

 让我们一起遨游在代码的海洋里!

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值