Как соединить таблицы в обратном порядке в запросе с использованием Criteria?
Есть сущности связанные с БД: Фильм->Роль->Актер. У Фильма есть список ролей. У роли есть актер. Актер не знает ни о фильмах, ни о ролях. Соединить все три таблицы можно так (допустим с условием, что только те фильмы, в которых снялся актер Jon).
Criteria crit = session.createCriteria(Movie.class);
crit.createCriteria("roles", "r", JoinType.RIGHT_OUTER_JOIN);
crit.createCriteria("r.actor", "a", JoinType.RIGHT_OUTER_JOIN);
crit.add(Restrictions.eq("a.name","Jon"));
Однако если мне нужен список актеров, которые играли в фильмах 2005, то мне нужно что то вроде
Criteria crit = session.createCriteria(Actor.class);
?
?
crit.add(Restrictions.eq("m.year",2005));//где m это Movie
Как получить эти соединения? Вариант получить фильмы через запрос, а потом методом get из объектов получить списки ролей(а потом актеров) меня не устраивает.