多态JPA查询

时间:2012-06-13 00:14:49

标签: java java-ee jpa persistence

有人可以给我一个JPA查询的例子,它选择几个选定的子类实体吗?例如,父实体是机构。我已将其分类为制造商,供应商,服务提供商。我想在一个返回Institution对象的查询中获取所有供应商和服务提供商,但不是制造商。

我用Google搜索,但无法找到解决此特定问题的任何资源。提前致谢。

1 个答案:

答案 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();