2014-10-27 43 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