我是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实现。
我需要保留分页,如果可能的话,我需要订购,我认为从"加入"到"单表",它有意义吗?
事先提前
答案 0 :(得分:0)
您可以使用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
答案 1 :(得分:0)
这很简单!但是很难找到JPQL多态查询的例子,所以这是我的答案:
select a.name,
case type (a)
when (A1) then a.int1
when (A2) then a.int2
end
from A a
获取子实体字段的常用方法是直接查询子字段名称,即:
选择a.int1 来自A a
这很容易,但我找不到足够的关于这个主题的文档。