![](/img/trans.png)
[英]Custom @Query for JpaRepository. Table name shown as red colored
[英]Complicated query with jparepository. Three tables join
我想用另一种方式过滤实体:获得10个不同的顶级学科,这些学科按学生在某个时间段内的学习次数(出勤率)排序。
List<Session> sessions;
//双向 List<Student> students;
//双向 因此,学生仅对Session并不了解纪律。 我想使用Spring JpaRepository编写如下内容:
List<Discipline> findTop10DisciplinesDistinctOrderBySessionsStudentsCountAndBySessionsBetween(Date from, Date to);
但是有一些限制。 这对我没用
找不到学生类型的财产计数! 遍历的路径: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存储库?
派生查询(从方法名称创建的查询)不适合您的用例。 即使可行,也将导致笨拙的方法名称。 使用带有JPQL或SQL查询的@Query
代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.