首页 文章

Hibernate条件查询多个条件

提问于
浏览
5

在我目前的项目中,我遇到了使用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 criteria API实现此查询?

1 回答

  • 12

    假设你的表是这样的:

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

相关问题