在我当前的项目中,我遇到了使用hibernate条件查询获取实体的问题。我有以下实体:
现在,我想获得与教授有关的所有作业,即教授分配给他的学生的所有作业。
此查询显示我要在条件查询中实现的内容。
select * from Assigment p, Student a, Professor c where p.studentid = a.id and a.proffid = c.id and c.id = 2411;
如何使用hibernate条件API实施此查询?
假设您的表格是这样的:
@Entity public class Professor{ K id; List<Student> students; } @Entity public class Student{ K profid; List<Assignments> assignments; } @Entity public class Assignments{ K studentid; }
使用别名的简单示例:
Criteria criteria = currentSession.createCriteria(Professor.class, "professor"); criteria.createAlias("professor.students", "student"); criteria.createAlias("student.assigments", "assigment"); criteria.add(Restrictions.eqProperty("professor.id", "student.profid")); criteria.add(Restrictions.eqProperty("assigment.studentid", "student.profid")); criteria.add(Restrictions.eq("id", 2411)); return criteria.list();