多态JPA查询

Bud*_*tne 2 java persistence jpa java-ee

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

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

Kor*_*gen 10

来自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();
Run Code Online (Sandbox Code Playgroud)