我是Hibernate的新手,在进行联接中的提取关联时,遇到了以下查询:

em.createQuery(select guide from Guide guide join fetch guide.Students students);


上面的sql查询看起来像:

select
guide0_id as id_1_2_0,
students1_id as id_1_6_1,
guide0_name as name_2_2_0,
students1_guide_id as guide_id_4_6_1....


学生和向导之间存在多对多关系,而学生则是该关系的所有者。即使默认情况下延迟加载了指南,上述查询也会获取学生的详细信息。
我的问题是,如果我们的目的是让学生在select子句中以及上面的SQL中看到,为什么我们不能做一个简单的事情:

em.createQuery(select guide,students from Guide guide join guide.Students
students);


通过在students子句中添加select列?

最佳答案

即使默认情况下延迟加载指南,上述查询也会获取学生的详细信息


因为您使用的是“ join fetch”,而不仅仅是“ join”,所以您会热切地加载学生。

10-05 22:17