Получение и загрузка ссылочных классов третьего уровня через HQL

У меня есть следующая настройка класса для студента в спящем режиме. Ученик класса содержит набор объектов Score. Каждый объект оценки содержит оценку, идентификатор учащегося и объектgradeEvent. Объект события оценки содержит такие вещи, как дата, описание и т. д. Я хочу получить учащегося и загрузить все связанные с ним объекты оценки и объект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>

событие

<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>

person Jared    schedule 02.11.2009    source источник


Ответы (1)


Вы можете получить к нему доступ точно так же, как и к баллам; вам просто нужно назначить псевдоним для коллекции, чтобы вы могли ссылаться на нее снова:

from Student student
 left join fetch student.scores score
 left join fetch score.gradeEvent
where student.studentId=1
person ChssPly76    schedule 02.11.2009