[英]JPQL query where clause using IN, How to pass the parameter to the query
[英]how to perform parameter binding for in clause for Collection in JPQL without using JOIN?
这是数据建模方案:
为了说明起见,请考虑以下简单数据模型:
从项目到部门的多对多
从项目到员工的多对多
考虑这个实体:
@Entity
@NamedQueries( {
@NamedQuery(name = "project.getProjectByDepartmentAndEmployee",
query = "SELECT p from Project p WHERE (:dept) in p.department and (:emp) in p.employees"),
})
public class ConfigFile extends BaseUpdatableEntity implements Serializable {
private Long id;
@ManyToMany
private List<Department> departments;
@ManyToMany
private List<Employee> employees;
}
在我的刀层中,我要执行以下操作:
public Project getProject(Department dept, Employee emp){
Query query = getEntityManager().createNamedQuery("project.getProjectByDepartmentAndEmployee");
query.setParameter("dept", dept)
.setParameter("emp",emp);
return (UserSession) query.getResultList().get(0);
}
我在上面的NamedQueryConstruction中看到的问题。 如何在左侧的Where子句中绑定参数。
感谢帮助
注意
下面的答案将起作用。 但是我正在寻找一个解决方案而不使用JOIN
尝试将JPQL查询更改为:
SELECT p
from Project p
inner join p.department d
inner join p.employees e
WHERE d = :dept and e = :emp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.