我在Hibernate中为Student提供了以下类设置。 班级学生包含一组乐趣对象。每个得分对象都包含得分,学生ID和gradeEvent对象。 成绩事件对象包含日期,描述等内容。 我想获取一个学生并加载所有相关的得分对象和与已获取的每个Score对象关联的gradeEvent对象。以下HQL允许我访问Student对象,其中相关的Score对象的字段接受gradeEvent
"from Student student left join fetch student.scores where student.studentId=1"
如何在查询时加载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>
得分
<many-to-one name="student" class="gradebook.model.Student" update="false" insert="false" fetch="select">
<column name="student_id" not-null="true" />
</many-to-one>
<many-to-one name="gradeEvent" class="gradebook.model.GradeEvent" update="false" insert="false" fetch="select">
<column name="event_id" not-null="true" />
</many-to-one>
gradeEvent
<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>
答案 0 :(得分:1)
您可以使用与分数完全相同的方式访问它;你只需要为集合分配一个别名,这样你就可以再次引用它:
from Student student
left join fetch student.scores score
left join fetch score.gradeEvent
where student.studentId=1