0

我正在使用休眠命名查询。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"

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

这在休眠中可能吗?

4

1 回答 1

0

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

你可能想要这样的东西:

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

(注意“select emp”) 那么结果应该是一个 Employee 对象的列表。

于 2013-06-02T09:52:12.307 回答