我有4张桌子:
教师,学生,课程及其共同联接表TeacherStudentCourse。
前三个表与最后一个表都有一对多的关系。 以下是我的数据库DataBase sample的屏幕截图 因此,例如,我应该能够通过提供教师ID和课程ID来获得学生的愿望。
我之前曾在联名表上问过一个问题。 Previous Question 而我确实得到了答案。 我试图根据以前的代码进行改进
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List<Object> list = session.createQuery("select s from Student s join s.teacherStudentCourses tsc where tsc.teacher = :teacher and tsc.course = :course")
.setParameter("teacher", teacher)
.setParameter("course", course)
.list();
session.getTransaction().commit();
session.close();
但是经过无数次的尝试,我似乎并没有让它发挥作用。也许查询不能以这种方式创建?任何帮助将不胜感激!
[UPDATE]
我得到的错误是:
org.hibernate.QueryException:无法解析属性:teacherStudentCourses:model.Student [select s from model.Student s join s.teacherStudentCourses tsc where tsc.teacher =:teacher and tsc.course =:course]
答案 0 :(得分:0)
这里的表格与外键相互关联,因此所有子表格(教师,资源,学生)都应在其POJO中具有父类型变量。
这是Student.class中的“TeacherStudentCource tsc”。 现在查询将是..
select s.studentId,s.name,s.gender,s.birthdate, from Student s inner join s.tsc b where b.teacherId=:tid and b.courceId=:cid;
教师ID = tid 课程ID = cid