当前位置:编程学习 > JAVA >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,