我有两个表,员工和项目,具有多对多关系。我应该如何编写HQL来获取员工正在为之工作的所有项目?
答案 0 :(得分:0)
您无需编写查询。如果您使用@ManyToMany
设置关系,那么您可以获得一个员工,然后employee.getProjects()
将返回正确的数据。
public class Employee {
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "employee_project",
joinColumns = @JoinColumn(name = "employee_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id")
)
private Collection<Project> projects;
}
public class Project {
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "employee_project",
joinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "employee_id", referencedColumnName = "id")
)
private Collection<Employee> employees;
}