我是 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/