可以LAZY使用HQL 覆盖LEFT JOIN FETCH.
FROM Obj AS obj LEFT JOIN FETCH obj.otherObj WHERE obj.id = :id
Run Code Online (Sandbox Code Playgroud)
是否也可以覆盖EAGER?怎么样?
我有四张桌子:
RootNode // Will return multiple root nodes
SubNode // Will return one sub node per root node
SubNodeChildren1 // Will return multiple for each sub node
SubNodeChildren2 // Will return multiple for each sub node
Run Code Online (Sandbox Code Playgroud)
和类似的实体结构:
RootNode -> SubNode -> SubNodeChildren1
-> SubNodeChildren2
Run Code Online (Sandbox Code Playgroud)
我需要一个查询,它将返回RootNodes表中的所有内容,SubNode并SubNode初始化其子项.这SubNode是令人兴奋的,但SubNode孩子们是懒得取出来的.
我知道如何编写一个查询,该查询将LEFT OUTER JOIN FETCH表的直接子项并相应地初始化它们.但是,我不知道如何抓住从顶级表中急切获取的表的子项.
我尝试过类似的东西:
SELECT rn FROM RootNode AS rn LEFT OUTER JOIN FETCH rn.SubNode.SubNodeChildren1
Run Code Online (Sandbox Code Playgroud)
但是,这总是给我一个错误,即所有者不属于SELECT.
任何帮助是极大的赞赏.