一尘不染

休眠:在HQL中覆盖映射的EAGER?

hibernate

可以LAZY使用在HQL中覆盖LEFT JOIN FETCH

FROM Obj AS obj LEFT JOIN FETCH obj.otherObj WHERE obj.id = :id

是否也可以覆盖EAGER?怎么样?


阅读 223

收藏
2020-06-20

共1个答案

一尘不染

Hibernate
Docs
中的此代码段中的限定词意味着您可以用热切的方法覆盖懒惰,但不能用其他方法来替代:

如果您正在使用属性级别的延迟获取(通过字节码检测),则可以强制Hibernate使用获取所有属性立即在第一个查询中获取延迟属性。

不寻常的是,如果您使用Criteria
API从急切变为懒惰,则看起来可以。只需调用setFetchMode(FetchMode.LAZY)相关的联接即可。

2020-06-20