Java HQL:来自具有多对多关系的多个实体的数据

Java HQL:来自具有多对多关系的多个实体的数据,java,json,hibernate,Java,Json,Hibernate,我有3个具有多对多关系的实体。例如类,学生和科目。 有两个关系表/实体ClassStudent和StudentSubject。这些表负责处理关系ClassStudentclass看起来像这样: public class ClassStudent{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) @NotNu

我有3个具有多对多关系的实体。例如
学生
科目

有两个关系表/实体
ClassStudent
StudentSubject
。这些表负责处理关系
ClassStudent
class看起来像这样:

public class ClassStudent{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    @NotNull
    private Long classId;

    @Column(nullable = false)
    @NotNull
    private Long studentId;

    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "classId", updatable = false, insertable = false)
    private Class class

    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "studentId", updatable = false, insertable = false)
    private Student student;
}
StudentSubject
课程也采用相同的模式。
我正试图写一个查询,每个班级、每个学生和每个学生的科目都是这样的

[
 {
  "class":{
     "id":1,
     "name":Maths
   },
   "studentDetails":[ {
      "Student":{
        "id":1
        "name":"First Name"
       },
       "Subjects": [{
          {
            "id":1,
            "code":xxx
          },
          {
           "id":2,
           "code":yy
          }
       }]
   }]
我试着写一个基本的查询,但根本不起作用

SELECT c, cs.student, ss.subject FROM ClassStudent cs, Class c, Student s, StudentSubject ss, Subject subject"
            + " LEFT JOIN cs.student student"
            + " LEFT JOIN ss.subject subject"