如何使用HQL从多对多表中获取结果

时间:2017-03-22 17:18:32

标签: java hql

我有两个表,员工项目,具有多对多关系。我应该如何编写HQL来获取员工正在为之工作的所有项目?

1 个答案:

答案 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;

}
相关问题