Hibernate 通过HQL检索和加载第三级引用类

Hibernate 通过HQL检索和加载第三级引用类,hibernate,hql,Hibernate,Hql,我为Hibernate中的学生设置了以下课程。 类student包含一组分数对象。每个分数对象都包含分数、学生id和gradeEvent对象。 等级事件对象包含日期、描述等内容。 我想获取一个学生并加载所有相关的分数对象以及与已获取的每个分数对象相关的gradeEvent对象。以下HQL允许我使用gradeEvent接受的关联分数对象字段访问学生对象 "from Student student left join fetch student.scores where student.studen

我为Hibernate中的学生设置了以下课程。 类student包含一组分数对象。每个分数对象都包含分数、学生id和gradeEvent对象。 等级事件对象包含日期、描述等内容。 我想获取一个学生并加载所有相关的分数对象以及与已获取的每个分数对象相关的gradeEvent对象。以下HQL允许我使用gradeEvent接受的关联分数对象字段访问学生对象

"from Student student left join fetch student.scores where student.studentId=1"
<set name="scores" inverse="false" lazy="true" table="score" fetch="select">
<key>
<column name="event_id" not-null="true" />
</key>
<one-to-many class="gradebook.model.Score" />
</set>
如何在查询时加载gradeEvent对象,以便在会话关闭后访问它?我已将映射文件的相关部分放在下面

学生

<set name="scores" inverse="true" lazy="true" table="score" fetch="select">
<key>
<column name="student_id" not-null="true" />
</key>
<one-to-many class="gradebook.model.Score" />
</set>

得分


成绩赛

"from Student student left join fetch student.scores where student.studentId=1"
<set name="scores" inverse="false" lazy="true" table="score" fetch="select">
<key>
<column name="event_id" not-null="true" />
</key>
<one-to-many class="gradebook.model.Score" />
</set>

您可以使用与分数完全相同的方式访问它;您只需为集合分配一个别名,就可以再次引用它:

from Student student
 left join fetch student.scores score
 left join fetch score.gradeEvent
where student.studentId=1