【发布时间】:2018-05-02 19:08:29
【问题描述】:
我想用下一种方式过滤实体: 获得不同的 10 个顶级学科,这些学科按学生人数(出勤率)在一段时间内进行排序。
-
纪律有
List<Session> sessions;//双向 - 每个Session都有自己的
List<Student> students;//双向
所以,学生对纪律一无所知,只通过 Session。 我想使用 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 存储库?
【问题讨论】:
-
你有什么问题?
-
为什么不创建一个查询,它可以更清楚?除了你的解决方案有什么问题?
-
我想让它工作。如果使用@Query,也有一些限制
标签: java hibernate spring-data-jpa