i have quick question related to hibernate and the use of its detachedcriteria.
Three tables all have their ID individually as the parent key.
The tables are table Course, table Teacher and their join table TeacherCourse. Course and Teacher both have one to many relationship to TeacherCourse.
My question now is how do I get all the unique Courses with a Teacher ID
My current code is like
public static ArrayList<Course> getCoursesByTeacher(Teacher teacher){
ArrayList<Course> courses = new ArrayList<Course>();
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Course.class);
detachedCriteria.add(Restrictions.eq(Key.TEACHER, teacher));
detachedCriteria.add(Restrictions.eq(Key.OBJSTATUS, Value.ACTIVED));
List<Object> list = HibernateUtil.detachedCriteriaReturnList(detachedCriteria);
for(Object o : list){
courses.add((Course) o);
}
return courses;
}
But the TeacherCourse is missing in between. How do I slot in the teacherCourse and find all the unique courses for a teacher.
select c from Course c join c.teacherCourses tc where tc.teacher = :teacher- JB Nizetpublic List<Course> getCoursesByTeacher(Teacher teacher) { return session.createQuery("select c from Course c join c.teacherCourses tc where tc.teacher = :teacher").setParameter("teacher", teacher).list();}. This is all documented: docs.jboss.org/hibernate/orm/5.0/userGuide/en-US/html_single/… - JB Nizetpublic ArrayList<Course> getCoursesByTeacher(Teacher teacher){ ArrayList<Course> courses = new ArrayList<Course>(); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); List<Object> list = session.createQuery("select c from Course c join c.teacherStudentCourses tsc where tsc.teacher = :teacher") .setParameter("teacher", teacher).list(); session.getTransaction().commit(); session.close(); for(Object o : list){ courses.add((Course) o); } return courses; }An improved version - Ray