使用连接表在多对多关系中进行 JPQL 查询
JPQL Quesry in ManyToMany relation using JoinTable
下面是三个实体。我想使用 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 请求来指导我解决这个问题吗?
这是一个非常简单的查询
select r from rule r
join r.emp emp
join emp.Deps dep
where dep.id = :depId
阅读一点 docs 以了解连接语法的可能形式
下面是三个实体。我想使用 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 请求来指导我解决这个问题吗?
这是一个非常简单的查询
select r from rule r
join r.emp emp
join emp.Deps dep
where dep.id = :depId
阅读一点 docs 以了解连接语法的可能形式