如何使用hibernate检索具有父实体的特定子代

时间:2013-06-02 09:25:48

标签: hibernate

我正在使用Hibernate命名查询。 GetEmployerWithActiveEmployeeList

public class Employer {
.
.
@OneToMany(mappedBy = "employer", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
private Set<Employee> employee;
.
.
}



  public class Employee {
...
@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.MERGE })
@JoinColumn(name = "employer_id")
private Employer employer;

...
   }

现在我想将命名查询写入fetchEmployerWithActiveEmployee

我的命名查询就像这样

"from Employer employer left join employer.employees emp where employer.id=:employerId and emp.status = 1"

当我检查雇主对象时,它让我向我展示所有员工。

这是否可以在休眠状态下使用?

1 个答案:

答案 0 :(得分:0)

您的查询会选择至少拥有一名活跃员工的雇主。但是,这种“积极的员工”条件只是一个标准。选定的雇主对象仍包含所有员工。

你可能想要这样的东西:

select emp from Employer employer left join employer.employees emp where employer.id=:employerId and emp.status = 1

(注意“选择emp”) 然后结果应该是Employee对象的列表。