[英]JPA Joined inheritance query
我是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
但顯然它不起作用,如何進行此查詢? 我正在使用休眠實現。
我需要保留分頁,如果可能的話,可以保留順序,我認為將“聯接”更改為“單表”可能更好,這有意義嗎?
提前Thnks
您可以使用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
太簡單了! 但是很難找到JPQL多態查詢的示例,所以這是我的答案:
select a.name,
case type (a)
when (A1) then a.int1
when (A2) then a.int2
end
from A a
獲取子實體字段的常見方法是直接查詢子字段名稱,即:
從A a中選擇a.int1
這很容易,但是我找不到關於該主題的足夠文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.