hibernate join 可否像sql一样实现一次查询呢?
例如:有两个关联表,是many-to-one的关系,
student(sno,sname,cno),
classEntity(cno,cname),
其中student.cno = classEntity.cno,
且student表中有未分配班级的情况,即student.cno在classEntity中不存在。
现想查出所有sname="小明"的人都在哪个班级中,
如果用sql:
select sno,sname,cname from student s left join classEntity c on s.cno = c.cno where s.sname="小明"
结果得到5条记录:
sno sname cname
----------------------------------------
3 小明 一年级一班
7 小明 一年级二班
9 小明 一年级三班
如果使用Hibernate:
首先建立model间的关联关系,这里建在student中,关系为many-to-one
hql为:
select s.sno,s.sname,c.cname from Student s left join fetch s.classEntity c where s.sname="小明",
发现hibernate在执行时,无论是否在hql中添加“fetch”,如果想得到select需要的结果集,都执行了四次。
第一次,从student表中取出sname="小明"的结果集,
然后根据结果集(此例中结果集为3条)中的cno,去classEntity中查找相应的cname。
另外,还有一个前提是,在Hibernate中不可以使用sql,
也就是说不能使用createSQLQuery()方法。
现在担心,如果从many一方的表中,如果取出的结果集很大,在进行这种关联查询时会影响效率。
【求教】:
可否使用Hiberante(不能使用sql查询)实现类似sql这种一次取出结果集的效果呢??
--------------------编程问答-------------------- fetch=“join”
补充:Java , Java EE