代码之家  ›  专栏  ›  技术社区  ›  OOvic

使用JoinTable实现多个关系中的JPQL查询

  •  0
  • OOvic  · 技术社区  · 7 年前

    我下面有三个实体。我想使用JPA按DEP id获取规则列表

    规则-----------一域----------->EMP-----------许多-------------->部门。

     @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;
        }
    

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Zeromus    7 年前

    这是一个非常简单的查询

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

    读一点 docs 了解连接语法的可能形式