2010-07-19 35 views
0

查詢看起來是這樣的:我想用替代基本查詢替換「左外連接」,我該怎麼做?

Select t1.*, t2.balance from t1 left outer join t2 on (t1.id1 = t2.id1 and t1.id2 = t2.id2) 
where t1.name = 'name'; 

我很好,直到我已使用本機查詢,但現在我需要使用Hibernate的JPA實現對所有查詢。涉及的表格沒有任何關聯。

這就是爲什麼我想使用與左外連接相當的替代基本查詢。

感謝, 馬赫什

回答

0

我唯一的建議是UNION兩個查詢的結果,內部聯接,然後從T1行,而不在T2匹配,是這樣的:

Select t1.*, t2.balance from t1, t2 where t1.name = 'name' and t1.id1 = t2.id1 and t1.id2 = t2.id2 
UNION 
Select t1.*, null where t1.name = 'name' and (t1.id1,t1.id2) not in (select id1, id2 from t2) 
; 

我不熟悉Hibernate,所以不知道這是否會給你帶來同樣的問題。我想在最壞的情況下,如果你真的只能執行基本查詢,那麼有兩個獨立的查詢,並結合代碼結果可能已經足夠。