2012-05-11 93 views
1

我有兩個實體A,B關係正在進行中,可選,一對多從A到B(多邊),我想選擇每個B和它的(或者如果沒有與該BI有關的A需要空值),那麼使用正確的外連接可以輕鬆完成,但是hibernate不支持在標準API中進行右外連接的問題,所以我想爲此解決此問題。JPA標準(和JPQL)右外連接

+0

如果關聯沒有按照您導航的方向進行建模,則無法使用「Criteria」API執行連接。您可以嘗試使用HQL並編寫與您想要的右外連接等效的ANSI-89連接(希望RDBM的優化器將有效地執行連接)。 –

+0

我決定不使用Criteria API,只使用JPQL「select b,a from a a right join a.lotsOfBs b」 –

回答

2

根據你的場景你想使用左連接。像

select b from B b left join A a 
where a.fkey is null 

,或者如果你想要的任何標準之前加入,然後使用

select b from B b left join A a with a.type = 1 
where a.fkey is null 

這與被送達「和」用「的」子句將服務器類似用途

例如:

select t from Template t left join t.profiles p with p.type = 1 
where p.id is null 

這將得到所有沒有配置文件類型1的模板