2014-01-21 215 views
0

我有例如2個實體。
實體(Mysql Table name =「A」)
B實體(Mysql Table name =「B」)
我想要從A表中取數據,它不在B表中。
我寫了SQL,它工作。
SELECT * FROM一個 LEFT OUTER JOIN B ON A.id = B.a_id WHERE B.id IS NULL如何用左外連接創建jpql

如何使用JPQL意識到這一點?

+1

不確定你在這裏問什麼。你是否要求Java中需要的整個設置來獲取和存儲結果到對象中?或者如何將該查詢翻譯成可以從實體管理器運行的內容?如果第二個點乍一看,它看起來很好。 –

+0

是的,我想翻譯它是JPQL,可以從一個實體經理運行。 – ElvinAliyev

+0

然後我沒有看到任何問題的查詢。你試過了嗎? –

回答

0

如果你有某種以下結構:

Class EntityA 
-------- 
long Id 
Set<EntityB> Bs 

Class EntityB 
------- 
long Id 
EntityA A 

我認爲以下應工作

SELECT a FROM EntityA a WHERE a.Bs IS EMPTY 
0

我相信下面應該工作:

SELECT A FROM A a LEFT JOIN a.B b WHERE b.id = null; 

這應該對ID連接A爲B留下空,其中A CAN不匹配B.然後它從b中選擇行,其中b.id爲空。看起來像你在找什麼。同時結帳以下SOs:How to make a JPA query with LEFT OUTER JOIN 並如下所示:How to create a JPA query with LEFT OUTER JOIN

讓我知道它是否成真。

+0

沒有它沒有工作。JPA – ElvinAliyev

+0

中沒有「ON」運算符那麼JPA 2.1中有一個ON運算符(但不是早期版本),但沒有「SELECT *」 – DataNucleus

0

你可以使用這個命令

SELECT * FROM A,其中A.id NOT IN(SELECT B.id FROM B)

如果婉只用加盟讓我知道

+0

這是查詢是不正確的。因爲他給我所有來自A表的數據,但是我需要來自A表中的數據,它不在B表中 – ElvinAliyev

+0

該查詢給出了所有來自'A'的ID,其中ID不在'B'中。這不是你想要的嗎? –

+0

嗨!我正在使用php mysql你可以修改這個查詢到你的平臺 –