Я хочу отфильтровать объекты следующим образом:
получить 10 лучших дисциплин, которые упорядочены по количеству учащихся (посещаемости) для сессий между определенным периодом времени.
- Дисциплина имеет
List<Session> sessions;
// двунаправленный
- Каждый сеанс имеет свой собственный
List<Student> students;
// двунаправленный
Итак, Студент ничего не знал о Дисциплине, только через Сессию.
И я хочу написать, используя Spring JpaRepository что-то вроде:
List<Discipline> findTop10DisciplinesDistinctOrderBySessionsStudentsCountAndBySessionsBetween(Date from, Date to);
но есть некоторые ограничения. У меня это не сработало
Не найдено объектов недвижимости для типа Student! Пройденный путь:
Discipline.sessions.students.
Запрос выглядит так (mysql):
select d.*
from session as ses
inner join
(select st.*
from student as st
inner join session as ses on ses.id = st.session_id
where ses.time > (curdate() - interval 30 day)
group by st.session_id
order by count(st.id) desc
limit 10) as st2
on ses.id = st2.session_id
inner join discipline as d on ses.discipline_id = d.id
Но как добавить этот запрос в репозиторий jpa?