2013-07-06 44 views
1

查詢幾個表的問題最近,我需要在我的項目中使用JPA。 但是,我遇到了一些困難。 JPA看起來比我想象的更難。 所以,我在這裏發佈我的問題,希望有些人可以幫助我。有關通過JPA

有兩個表的操作和分析,SQL是這樣的:

select op_id from operation where flag = 1 
union 
select an_id from analysis where on_type = "processed"; 

op_idan_id是兩個列名,其實就是一樣的。

任何人都可以幫我寫一個JPA版本嗎? 我非常感謝。 非常感謝。

回答

1

JPQL不支持聯合。

您有四個選項:

  1. 您可以創建在您的數據庫視圖,會做的unioning,然後映射到該視圖
  2. 寫原生SQL,做工會(因爲你只需要的ID,這是一個有效的選項)
  3. 如果ID是不同的,你可以運行兩個查詢,並連接結果列表(如果不是明顯的,你可以使用Set s到過濾重複)
  4. 如果您正在使用作爲JPA提供者的最新(至少> = 2.4)EclipseLink可以使用UNION

查看this question這裏。

+1

另外,如果使用EclipseLink,則支持UNION(> = 2.4) – James

+0

謝謝@James不知道這一點。更新了答案。 – gaborsch