如何与具有复合键的表建立关系?

时间:2015-06-29 00:38:57

标签: java hibernate hibernate-mapping

我有一个course_subject表,其中每个主题都可以与许多课程相关联。

Course Subject
C1      S1
C1      S2
C1      S4
C2      S1
C3      S1

student表,其中每个学生只能有一门课程。

 Student Course
    S1       C1
    S2       C1
    S3       C2
    S4       C3

我的CourseSubject课程如下

@Entity
Class CourseSubject {
    @Id
    String Course;
    @Id
    @ManyToOne
    Subject subject;
    ...
}

我的Student课程如下

@Entity
Class Student {
   @Id
   long id;
   String fname;
   String lname;
   String course;
   ...
}

换句话说,每个学生只有一门课程,但每门课程都有多门科目,这意味着每个学生都通过相关课程与多门科目相关。

我需要知道如何创建如下的查询:

查询:显示所有参与主题S1的学生。

结果:因此,根据以上记录,它应该显示所有注册C1,C2和C3的学生,因为他们都有主题S1。

(请注意,在学生班,我只有课程名称)

我想,一个选项可以像

一样进行查询
Select * from Student WHERE course IN 
                                     (Select course from 
                                           CourseSubject 
                                           WHERE 
                                           subject.name = 'S1')

0 个答案:

没有答案