hibernate之HQL之left outer join

1、假设我们一个班级对应多个学生

List<ClassesPojo> classes= session.createQuery("from ClassesPojo classes left  join  fetch classes.student2").list();
for(ClassesPojo cl:classes){
Set<Student2Pojo> students=cl.getStudent2();
for(Student2Pojo stu:students){
System.out.println(stu.getName());
}
             //System.out.println(cl);
         }

对于left outer join对应的hql语句为:

from ClassesPojo classes left  join  fetch classes.student2

查询对应的sql为:

Hibernate: select classespoj0_.id as id0_0_, student2x1_.id as id1_1_, classespoj0_.name as name0_0_, student2x1_.name as name1_1_, student2x1_.classesid as classesid1_1_, student2x1_.classesid as classesid0_0__, student2x1_.id as id0__ from classes classespoj0_ left outer join student2 student2x1_ on classespoj0_.id=student2x1_.classesid

这样就只有一个sql语句。

这样对应的结果会显示班级表所有的记录,如果班级没有学生,那么学生就为null。

2、如果使用传统的hql查询,只查询班级,那么就会产生n+1次查询,性能会很低。


3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值