繁体   English   中英

带有jparepository的复杂查询。 三个表联接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM