java - JPA连接继承查询

标签 java hibernate jpa inheritance

我是 JPA 继承的新手。我不知道如何查询这样的内容:

假设一个联合继承映射,其中 A 是具有“id”和“name”的实体。并且有继承自A的实体A1和A2。 A1 提供字段“int1”,A2 提供字段“int2”

我想使用 JPQL 获取两列:“name”、“int”(这一个可能是“int1”或“int2”)

我想做这样的事情:

select a.name,
  case type(a)
    when A1 a1 then a1.int1
    when A2 a2 then a2.int2
  end as int 
from A a

但是显然它不起作用,我该如何进行这个查询?我正在使用 hibernate 实现。

我需要保留分页,如果可能的话,还需要保留排序,我认为从“联接”更改为“单表”可能会更好,这有什么意义吗?

提前致谢

最佳答案

您可以使用 UNION。

select a1.name as name, a1.int1 as id
from A1 a1
UNION
select a2.name as name, a2.int2 as id
from A2 a2

关于java - JPA连接继承查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410501/

相关文章:

java - HQL 多个 where 子句

json - 存储 json、jsonb、hstore、xml、enum、ipaddr 等失败,显示 "column "x“是 json 类型,但表达式是字符类型变化”

java - 将图像保存到数据库时JAVA中的classcastException

java - 构造函数中的匿名比较器使用强制转换为 Comparable

java - eclipse 如何感知诸如break循环结束、关键字等的东西?

java - 在 javacv 中 reshape IplImage

java - 如何更改Spring Cloud GCP的依赖版本

Hibernate OneToMany JoinColmuns 和常量值

java - 手动更新 hibernate 版本

java.lang.AbstractMethodError 在 createQuery 期间