gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:06:00 25 4
gpt4 key购买 nike

这是数据建模场景:

为了便于说明,考虑这个简单的数据模型:

从项目到部门多对多

从项目到员工的多对多

考虑这个实体:

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

}

在 My Dao 层中,我想执行以下操作:

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 子句中绑定(bind)参数。

感谢帮助

注意

下面的答案将起作用。但如果可能,我正在寻找不使用 JOIN 的解决方案

最佳答案

尝试将您的 JPQL 查询更改为:

SELECT p 
from Project p
inner join p.department d
inner join p.employees e
WHERE d = :dept and e = :emp

关于java - 如何在不使用 JOIN 的情况下为 JPQL 中的 Collection 子句执行参数绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com