我有一个类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过滤器),但效率较低。
答案 0 :(得分:0)
解决方案是在employeePhoneNumber中创建一个类似的过滤器,如下所示:
<filter
name="salaryFilter"
condition="((select e.salary from Employee e where e.id = employeeId) < salaryParameter)"
/>