从映射中检索数据 table

retrieving data from a mapping table

我有两个具有多对多关系的实体:

和中间的连接 table

Student.java:

@ManyToMany
    @JoinTable(name="STUDENT_TEACHER", joinColumns=@JoinColumn(name="STUDENT_ID"), inverseJoinColumns=@JoinColumn(name="TEACHER_ID"))

    private Collection<Teacher> teachers = new ArrayList<Teacher>();

Teacher.java:

@ManyToMany
private Collection<Student> students= new ArrayList<Student>();

我使用标准来检索所有学生,例如:

studentList = session.createCriteria(Student.class).list();

但是现在我想要一个Teacher id=2下的学生列表,而映射table STUDENT_TEACHER不是class,如何在这个中检索案件?

你可以触发一个 HQL,比如,

SELECT s FROM Student s WHERE s.teachers.id = 2

此外,many to many 关系的反面在您的老师 class 中不存在。它应该用下面的代码注释:

@ManyToMany(mappedBy="teachers")
private Collection<Student> students= new ArrayList<Student>();