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

Java 如何使用HQL从多对多表中获取结果,java,hql,Java,Hql,我有两个表,Employee和Projects,具有多对多关系。我应该如何编写HQL来获取员工正在为之工作的所有项目?您不需要编写查询。如果您已经设置了与@ManyToMany的关系,那么您可以只获取一名员工,然后Employee.getProjects()将返回正确的数据 public class Employee { @ManyToMany(fetch = FetchType.EAGER) @JoinTable( name = "employee_p

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

您不需要编写查询。如果您已经设置了与
@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;

}
公共类员工{
@ManyToMany(fetch=FetchType.EAGER)
@可接合(
name=“employee\u项目”,
joinColumns=@JoinColumn(name=“employee\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“project\u id”,referencedColumnName=“id”)
)
私人收藏项目;
}
公共类项目{
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@可接合(
name=“employee\u项目”,
joinColumns=@JoinColumn(name=“project\u id”,referencedColumnName=“id”),
inverseJoinColumns=@JoinColumn(name=“employee\u id”,referencedColumnName=“id”)
)
私人收藏员工;
}

感谢您的回复。对不起,我是java的新手。。。。那么我如何在Employee/Project类的服务实现文件中创建api或“方法”呢?这是另一个问题。