2014-10-27 41 views
1

寫了一個名爲查詢JPA命名查詢使用OR和空操作員給空結果

@NamedQuery(name = PKGruppeBE.FIND_ALL_GROUP_SPECIFIC, query = "SELECT e FROM PKGruppeBE e 
    WHERE 
    (e.tkgroup.id = ?1 OR e.tkgroup IS NULL)") 

但查詢不給正確的結果,

如果有匹配,並tkgroup爲空只給出匹配結果,

如果沒有匹配tkgroup爲空給空的結果。

我的要求是我必須得到所有的結果,其中tkgroup爲空,如果有任何匹配的結果也。

+0

這是我確切的情況和@Predrag馬里奇的回答得很正確......這讓當你在他提供的查詢更密切地關注完美的感覺。 – CodeBurner 2017-02-28 10:14:06

回答

3

嘗試,如果這個工程

SELECT e FROM PKGruppeBE e left join e.tkgroup gr WHERE gr.id = ?1 OR gr IS NULL 
+0

其不工作 – 2014-10-27 14:25:22

+0

對不起,我忘了離開加入,嘗試我編輯的查詢。我只是在我的項目中嘗試了這一點,它的工作原理。 – 2014-10-27 14:39:41

+0

完全爲我工作 – CodeBurner 2017-02-28 10:10:53