我是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”,所以您会热切地加载学生。