簡體   English   中英

JPA連接繼承查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM