繁体   English   中英

如何在不使用JOIN的情况下为JPQL中的Collection的in子句执行参数绑定?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM