问题描述
有二张表student id name 1 张三books id stuId(外键) bookName type 1 1 MySql 数据库 2 1 Java 程序语言请问:在使用Hibernate即时加载的情况下:"From Student "会把所有加载books集合,可以把学生和书查出来,如果想在即时加载时只查books表中type为"数据库"的,请问如何写Hql? 谢谢!问题补充:请问: 如果我的配置文件里使用延时加载的话,我的hql如何写才能够即时加载books的集合呢?并且符合上面的条件 .. 谢谢了!
解决方案
HQL语句就像楼上这位朋友写的。如果你设置了延迟加载,当你检索完一个Student对象后,Hibernate不会初始化这个对象中的books集合,当你调用student.getBooks().iterator()这段代码的时候,Hibernate就会为你初始化这个集合了。所以,不用担心HQL语句的问题,正常查询就可以了。如果要写这样的HQL语句的话,你可以这样写试试from Student s join fetch s.books
解决方案二:
from Student s where s.books.type ='数据库'books 为 Student 的一个Set 类型的属性需要在Student.hbm.xml 里配置。Student 和 Book之间的一对多的关系。希望对lz有所帮助
时间: 2024-09-21 01:01:12