Hibernate过滤器不适用于内连接?

时间:2011-03-21 07:12:19

标签: hibernate

我有一个类Employee,它定义了一个过滤器。 过滤器会过滤薪水少于1000的所有员工。

我还有一个EmployeePhoneNumber课程。员工可能有多个EmployeePhoneNumber,但每个EmployeePhoneNumber都与一名员工相关联。 (多到一个)

当我启用过滤器并查询员工时:

SELECT employee from Employee employee

过滤器工作正常,只返回薪水超过1000的合适员工。

当我查询员工和员工之间的内部联接时:

SELECT employeePhoneNumber.id, employee.id from EmployeePhoneNumber employeePhoneNumber inner join employeePhoneNumber.employee employee

过滤器不起作用,我从薪水少于1000的员工那里得到电话号码。

我该如何解决它(仍然使用过滤器和连接)?我知道我可以这样做,在我的查询中添加一个子选项(检查员工在Employees中是否会添加necassary过滤器),但效率较低。

1 个答案:

答案 0 :(得分:0)

解决方案是在employeePhoneNumber中创建一个类似的过滤器,如下所示:

<filter 
    name="salaryFilter" 
    condition="((select e.salary from Employee e where e.id = employeeId) < salaryParameter)" 
/>