Hibernate 使用JoinTable在多个关系中进行JPQL查询

Hibernate 使用JoinTable在多个关系中进行JPQL查询,hibernate,jpa,jpql,Hibernate,Jpa,Jpql,我下面有三个实体。我想通过使用JPA获得DEP id的规则列表 规则------一个领域--------------------环境管理计划------许多领域----------环境管理计划 @Entity @Table(name = "EMP") public class Emp implements Serializable { private static final long serialVersionUID = 1L; @Id

我下面有三个实体。我想通过使用JPA获得DEP id的规则列表

规则------一个领域--------------------环境管理计划------许多领域----------环境管理计划

 @Entity
    @Table(name = "EMP")
    public class Emp implements Serializable {
        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;


        @OneToMany(mappedBy = "emp")
        private List<Rule> rules;

        @ManyToMany
        @JoinTable(name = "rule_ref_sub_category_ref", joinColumns = {
                @JoinColumn(name = "EMP_ID") }, inverseJoinColumns = { @JoinColumn(name = "DEP_REF_ID") })
        private List<Dep> Deps;
    }


     */
    @Entity
    @Table(name="DEP")
    public class Dep implements Serializable {
        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Long id;

        @Column(name="LABEL")
        private String label;

        private int mandatory;

        @ManyToMany(mappedBy="Deps")
        private List<Emp> emps;

    }

    @Entity
    @Table(name="RULES")
    public class Rule implements Serializable {
        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Long id;


        @ManyToOne
        @JoinColumn(name="EMP_REF_ID")
        private Emp emp;
    }
@实体
@表(name=“EMP”)
公共类Emp实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-id;
@OneToMany(mappedBy=“emp”)
私人名单规则;
@许多
@JoinTable(name=“rule\u ref\u sub\u category\u ref”,JointColumns={
@JoinColumn(name=“EMP_ID”)},inverseJoinColumns={@JoinColumn(name=“DEP_REF_ID”)})
私人名单部门;
}
*/
@实体
@表(name=“DEP”)
公共类Dep实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@列(name=“LABEL”)
私有字符串标签;
私人int强制性;
@许多(mappedBy=“Deps”)
私人名单环境管理计划;
}
@实体
@表(name=“RULES”)
公共类规则实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@许多酮
@JoinColumn(name=“EMP\u REF\u ID”)
私人环境管理计划;
}

有人能给我一个示例JPQL请求来解决这个问题吗。

这是一个非常简单的查询

select r from rule r
join r.emp emp
join emp.Deps dep
where dep.id = :depId

阅读一点以理解连接语法的可能形式

支持您发布的实体它实际上是一条规则------manytone------------>EMP