我有关于hibernate及其detachedcriteria的使用的快速问题。
三个表都将其ID分别作为父键。
表格为课程,表格教师及其加入表格 TeacherCourse 。 课程和教师都与TeacherCourse有一对多的关系。
我现在的问题是如何获得所有具有教师ID的独特课程
我目前的代码就像
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;
}
但是教师课程之间缺失了。我如何插入老师课程并找到老师的所有独特课程。
答案 0 :(得分:0)
JB Nizet给出了正确的答案,只是为了让它更清楚,这是我在我的情况下的解决方案:
public static 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.teacherCourses tc where tc.teacher = :teacher")
.setParameter("teacher", teacher).list();
session.getTransaction().commit();
session.close();
for(Object o : list){
courses.add((Course) o);
}
return courses;
}