当前位置: 首页 > 面试题库 >

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

彭弘伟
2023-03-14
问题内容

我有2个实体:EntityA和EntityB。

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

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

我需要这样的东西:

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

有什么提示吗?


问题答案:

好吧,我终于想通了。

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

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

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

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

问题解决了。



 类似资料:
  • 问题内容: 我想向用户显示他是否喜欢图像。为此,我正在创建php代码 我无法对“标签”,“份额”,“评论”,“收藏夹”等事物执行此操作…许多没有比这更简单的了吗?喜欢说 问题答案: 确实有很多方法可以做到这一点,但是如果您打算使用更多的信息,那么用户是否喜欢使用select *是一个坏主意。原因是您要数据库返回该表中每一列的值。 假设它是一个小型数据库,可能不是问题,但是随着数据库变大,您将在数据

  • 我需要在JPA查询中传递这个参数。 我如何才能实现这一点,而不是为IS NULL&IS NOT NULL创建2个单独的查询。

  • 我试图实现一个JPA查询,以检查是否存在任何日期时间戳与当前年份月份匹配的记录。现在我正在获取所有记录并进行迭代以匹配。我知道这不是正确的实现,只是想知道是否有任何内置的JPA查询可用于此场景。 这是我到现在为止的实现

  • 问题内容: 我知道我可以这样做: 然后只需编写语句中所需的代码。 还有其他方法可以检查它们是否相等? 问题答案: 怎么了 if(!Arrays.equals(array1,array2)) 与相同,即是同一数组。这不是大多数人期望的。 比较数组的内容。

  • 问题内容: 因此,我拥有这个现有的数据库架构,其中包含许多要使用JPA / Hibernate建模的表。每个表具有同一组,每组包含30个其他列(以允许运行时扩展记录的字段数)。 我计划为每个表定义简单的类 然后在公共类中定义公共附加参数 尽管这行得通,但我不喜欢此类的硬编码性质。 我想将每组字符串,长字段和双精度字段建模为一个附加参数组,然后将其设置为0..9组。如果需要的话,这样我以后可以轻松添

  • 问题内容: 这是我的情况,我有两个基本的POJO,并给出了一个简单的hibernate映射: 我的SQL查询返回的行看起来像这样: 我的hibernate查询如下所示: 这是每个部分的内容:Hibernate文档的18.1.3:http : //docs.jboss.org/hibernate/core/3.6/reference/zh- CN/html/querysql.html#d0e1746