Java 使用hibernate查询从连接在一起的4个表中获取数据
我有4张桌子: 教师、学生、课程及其常用联接表TeacherStudentCourse 前三个表都与最后一个表有一对多关系。 这是我数据库的截图 因此,例如,我应该能够通过提供教师ID和课程ID来获得想要的学生 我之前在join表上问过一个问题。 我确实得到了答案。 我试图在以前代码的基础上进行改进Java 使用hibernate查询从连接在一起的4个表中获取数据,java,hibernate,join,hql,Java,Hibernate,Join,Hql,我有4张桌子: 教师、学生、课程及其常用联接表TeacherStudentCourse 前三个表都与最后一个表有一对多关系。 这是我数据库的截图 因此,例如,我应该能够通过提供教师ID和课程ID来获得想要的学生 我之前在join表上问过一个问题。 我确实得到了答案。 我试图在以前代码的基础上进行改进 Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction
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();
会话会话=HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List List=session.createQuery(“从学生中选择s加入s.teacherStudentCourses tsc,其中tsc.teacher=:教师和tsc.course=:课程”)
.setParameter(“教师”,教师)
.setParameter(“课程”,课程)
.list();
session.getTransaction().commit();
session.close();
但经过无数次尝试后,我似乎无法让它工作。也许查询无法以这种方式创建?任何帮助都将不胜感激
[更新]
我得到的错误是:
org.hibernate.QueryException:无法解析属性:teacherStudentCourses of:model.Student[从model.Student中选择s加入s.teacherStudentCourses tsc,其中tsc.teacher=:teacher和tsc.course=:course]
这里的表通过外键相互关联,所以所有子表(teacher、cource、student)的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错误表明学生实体没有正确映射teacherStudentCourses字段。如果您需要更多帮助,只需发布您的实体代码org.hibernate.QueryException:无法解析属性:搜索此错误,因此有很多关于此错误的QA。我相信你会找到答案的。顺便说一句,您似乎没有在student中映射teacherStudentCourses。嗯,我想我错了,当我在student类中对teacherStudentCourses字段属性进行编码时,我对teacherStudentCourses有一个双“s”。。现在它仍然给我带来了一些其他的错误debugging@Joker,我确实有映射,但它没有显示在使用MySQL工作台中的反向工程生成的ERD中