例如,我们有学生S1、S2、S3、S4和课程C1、C2和C3。
学生s1、s2注意c1
学生S1、S2、S3参加C2课程。
查找S1和S2一起参加的所有课程
(预期答案为C1和C2)
如果能够展示Answer如何在Spring JPA/CRUD存储库中实现,我将不胜感激。
实体:
class Course {
@Id
private String id;
private String name;
@ManyToMany(fetch = FetchType.EAGER) //debugging purpouses
@JoinTable(name = "course_students",
joinColumns = @JoinColumn(name = "course_id"),
inverseJoinColumns = @JoinColumn(name = "student_id"))
Set<Student> students;
}
class Student {
@Id
String id;
String firstName;
String middleName;
String lastName;
String phoneNumber;
String email;
String avatar;
int age;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "students")
Set<Course> courses;
}
2条答案
按热度按时间oxosxuxt1#
您可以将上面的查询用于您的任务。在此查询中,首先学生按他们参加的课程分组。分组后,筛选出学生_lst是按课程分组的所有学生列表的子集的课程。
z9smfwbn2#
使用以下成员: