一尘不染

Hibernate / JPA:是否可以在单个查询中检索异构实体?

hibernate

我有2个实体:EntityA和EntityB。

它们是无关的,出于某些限制,我不能将它们放在继承树中。

但是我需要在同一个JPQL或HQL查询中混合包含两个实体的所有实例的List。JPA甚至直接使用Hibernate是否可以实现?

我需要这样的东西:

FROM EntityA WHERE fieldA=1
UNION
FROM EntityB WHERE fieldB="aa"

有什么提示吗?


阅读 241

收藏
2020-06-20

共1个答案

一尘不染

好吧,我终于想通了。

足以使实体实现一个公共接口(甚至不需要在Hibernate上声明此接口)。

然后,可以执行如下查询:

FROM my.package.CommonInterface obj
WHERE obj IN (FROM EntityA WHERE fieldA=1) OR
      obj IN (FROM EntityB WHERE fieldB='a')

这样,您可以检索List<CommonInterface>

问题解决了。

2020-06-20