скажем, у меня есть база данных с двумя таблицами: классы и студенты.Каждая таблица содержит метаданные по соответствующей теме.Например, классы содержат поля «classid», «name» и «room_number», а студенты содержат поля «name», «classid», «age» и «height» (например, студент может быть только в одном классе).
Что если я захочу написать HQL-запрос, чтобы получить все классы, в которые входят ученики с именами «Джо», «Боб» и «Фред»?Если бы студенты содержали только «classid» и «name», я думаю, что я мог бы написать следующее на HQL.
from Classes as class where
'Joe' in elements(class.students) and
'Bob' in elements(class.students) and
'Fred' in elements(class.students)
Тем не менее, студенты в этом случае являются объектом.Нужно ли выполнять соединения явно?
from Classes as class
join class.students as s1
join class.students as s2
join class.students as s2
where
s1.name = 'Joe'
s2.name = 'Bob'
s3.name = 'Fred'
Я полагаю, что использование 'Fred' in elements
также выполняет эти объединения, но писать гораздо компактнее!Или есть лучший способ сделать это вообще?