从映射中检索数据 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>();
我有两个具有多对多关系的实体:
和中间的连接 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>();