有人可以给我一个JPA查询的例子,它选择几个选定的子类实体吗?例如,父实体是机构。我已将其分类为制造商,供应商,服务提供商。我想在一个返回Institution对象的查询中获取所有供应商和服务提供商,但不是制造商。
我用Google搜索,但无法找到解决此特定问题的任何资源。提前致谢。
答案 0 :(得分:9)
来自JPA 2.0规范:
4.6.17.4实体类型表达式[...]实体的Java类用作输入参数以指定实体类型。例子:
选择e FROM Employee e WHERE TYPE(e)IN(豁免,承包商)
SELECT e FROM Employee e WHERE TYPE(e)IN(:empType1,:empType2)
[...]
所以我会尝试类似的事情:
List<Institution> institutions = em.createQuery("SELECT i FROM Institution i WHERE TYPE(i) IN ( Supplier, ServiceProvider ) ).getResultList();