我对HQL查询有这样的疑问
"SELECT c from Account c inner join c.person "
"SELECT c from Account c inner join fetch c.person"我可以使用fetch吗? equals?...When?
提前谢谢。
发布于 2014-02-04 01:18:59
Koitoer提到的是正确的
此外,在您的帐户人员通常设置为延迟加载,即使您将其加入HQL,收集人员可能无法加载,您必须使用'fetch‘来加载它们。
发布于 2014-02-04 01:16:59
Fetch join允许急切地加载集合,通常用于涉及集合的关系。这是一种急切地检索所有记录的方法,以避免在会话关闭或您将对象移动到视图时出现任何问题。
FETCH JOINs
发布于 2020-01-05 14:13:54
注释:假设person是Account类中的一个对象
"SELECT acc from Account acc inner join acc.person"
在这种情况下,Hibernate将返回所有与person关联的Account对象(即acc.person不为空)。
但是,如果您的用例要求您稍后在代码中执行acc.getPerson(),那么Hibernate将在内部运行另一个查询,以获取与acc关联的Person对象,前提是会话仍处于打开状态。
因此,为了保存额外查询,最好使用
"SELECT acc from acc inner join fetch acc.person“
当您知道稍后将需要使用关联的对象(本例中为Person对象)时。
另外,为了更好地理解,请参阅答案。
https://stackoverflow.com/questions/21533400
复制相似问题