Java HQL:来自具有多对多关系的多个实体的数据
我有3个具有多对多关系的实体。例如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
类
,学生
和科目
。
有两个关系表/实体
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"