【问题标题】:JPQL Quesry in ManyToMany relation using JoinTable使用连接表的多对多关系中的 JPQL 查询
【发布时间】:2018-10-17 09:14:46
【问题描述】:

我有以下三个实体。我想使用 JPA 按 DEP id 获取 RULE 列表

规则---------OneToMany---------->EMP------------ManyToMany---------- -->DEP.

 @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 请求来解决这个问题。

【问题讨论】:

  • 站在您发布的实体的立场实际上是规则----------ManyToOne---------->EMP

标签: hibernate jpa jpql


【解决方案1】:

这是一个非常简单的查询

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

阅读docs 以了解可能的连接语法形式

【讨论】:

    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 2016-02-18
    • 2021-10-21
    • 2018-07-06
    • 2021-12-10
    • 2018-11-06
    • 1970-01-01
    相关资源
    最近更新 更多