2012-06-12 47 views
0

我有兩個表T1和T2,我想實現這樣的事情:我可以使用EclipseLink對變量執行外連接嗎?

Select * from t1 left outer join t2 on (t1.id = t2.id and t2.x = :val) where t2.x is null or t2.x = :val 

我有T1和T2的實體。

在T1:

@OneToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "ID", insertable = false, updatable = false) 
protected T2 t2; 

我嘗試以下JPA查詢:

SELECT t1 FROM T1 LEFT JOIN t.t1 t2 WHERE t2.x IS NULL OR t2.x = :val 

,但它不給我我想要的東西。問題是,當我在T2中有一個匹配的記錄時,我將只接收一個T2.X值的結果。我需要任何值的結果,即使它是空的。

生成的SQL類似於:

SELECT * FROM T1 t1 LEFT OUTER JOIN T2 t2 ON (t2.ID = t1.ID) WHERE ((t2.X IS NULL) OR (t2.X = ?)) 

爲什麼我需要這個?我在T1中有一些詳細信息,T2中也有相同的信息。 T2中的信息是優先選擇的。如果數據在T2中不可用,我只需使用T1中的默認值即可。

可能是我看錯了方向。所以任何解決這個問題的想法都是受歡迎

謝謝!

回答

相關問題