一尘不染

休眠条件查询多个条件

hibernate

在我当前的项目中,我遇到了使用hibernate条件查询获取实体的问题。我有以下实体:

  • 教授,其中包含学生名单
  • 学生,其中包含作业列表。
  • 作业,其中包含分配到的学生的ID。

现在,我想获得与教授有关的所有作业,即教授分配给他的学生的所有作业。

此查询显示我要在条件查询中实现的内容。

select * from Assigment p, Student a, Professor c where p.studentid = a.id and a.proffid = c.id and c.id = 2411;

如何使用hibernate条件API实施此查询?


阅读 201

收藏
2020-06-20

共1个答案

一尘不染

假设您的表格是这样的:

@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();
2020-06-20