1

我有Person包含字段的类,包含字段age的类Student扩展,以及包含字段的类扩展。PersonclassTeacherPersonsalary

我想使用相同的 jpql 查询获取所有在 X 班的人,如果他们是学生,如果他们是老师,则赚取 1500 美元。查询必须返回人员列表。我可以进行两个查询并创建一个调用查询和加入结果的方法,但是有更好的解决方案。

我希望我能够解释

4

1 回答 1

1

使用“TYPE”和 JPA 2.1“TREAT”过滤类。

"SELECT p from Person p where treat(p as Teacher).salary = 1500 or TYPE(p) = Student"

如果您不能使用 JPA 2.1,您可以在 Teacher 上使用子查询返回薪水 = 1500 的教师 ID,并在主查询中使用结果。

"SELECT p from Person p where p.id in(SELECT t.id from Teacher t where t.salary=1500) or TYPE(p) = Student"
于 2013-11-11T13:19:24.850 回答