1

我有以下一组数据:

Class-
      |- Section
      |         |- Student1
      |         |         |-Day1Details
      |         |         |-Day2Details   
      |         |- Student2
      |         |         |-Day1Details
      |         |         |-Day2Details  
      |- Section
                :
                :

我正在使用 Hibernate ORM 将上述示例数据保存到数据库中。当我们尝试检索此数据时,休眠分别为每个学生执行查询。因此,如果有 1000 个学生,它将触发 1000 个查询以获取整个数据集,并且由于数据库的大量 i/os 会影响应用程序的性能。

我希望在以下几个查询中收集这些数据。

select class,section, students from c,s,stu where student.sec=s.sec and s.class = c.class

select day_details from day_details_tab where student in (studentId from above query).

有人可以帮助我实现这一目标吗?

4

1 回答 1

0

文档中描述了 HQL 中连接和关联的用法。一次加载所有内容的正确查询是:

 select clazz from Clazz clazz
 left join fetch clazz.sections section
 left join fetch section.students student
 left join fetch student.dayDetails

HQL 使用实体和关联。永远不要像您在问题中所做的那样使用表名和列名。

于 2013-05-05T07:57:30.367 回答