我有以下数据集:
Class-
|- Section
| |- Student1
| | |-Day1Details
| | |-Day2Details
| |- Student2
| | |-Day1Details
| | |-Day2Details
|- Section
:
:
我正在使用Hibernate ORM将上面的示例数据保存到db中。当我们尝试检索这个数据时,hibernate会分别为每个学生执行查询。因此,如果有1000名学生,它将触发1000次查询以获取整个数据集,并且由于对数据库的大量i / o而影响应用程序的性能。
我希望在以下几个查询中收集这些数据。
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).
有人可以帮助我实现这个目标吗?
答案 0 :(得分:0)
the documentation中描述了HQL中联接和关联的用法。一次加载所有内容的正确查询是:
select clazz from Clazz clazz
left join fetch clazz.sections section
left join fetch section.students student
left join fetch student.dayDetails
HQL使用实体和关联。永远不要像你在问题中那样使用表格和列名称。