簡體   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