2015-05-04 95 views
0

我有一个具有类别和分支列表的餐厅实体。我想搜索所有这些都是在特定区域和 类别所以,餐馆,我是做Hql查询过滤收集数据

SELECT R 
FROM Restaurant AS R 
    LEFT JOIN R.branches AS branch 
WHERE R.category.name LIKE :category AND branch.name LIKE :branch 

这是工作不错,但它只是恰巧是,当一个新的餐厅最初添加餐厅没有分支,但我想在结果中显示它们..我不知道如何实现这一目标,如何获得具有匹配类别和分支的餐馆(即使它没有分支)。

如果目前还不清楚什么,我试图做的,我试图做这样的事情..

设定R FROM餐厅为R LEFT JOIN R.branches AS分支 WHERE R.category。名称LIKE:类别AND(分支为空或分支名称LIKE:分支)

检索具有给定分支名称并且也包含那些没有任何分支关联的餐馆。或换句话说,如果任何餐厅没有任何分支,则将其返回到结果列表以及与搜索区域名称匹配的分支。

回答

0

您可以使用额外的加入使用HQL 条件与关键字:

SELECT R 
FROM Restaurant AS R 
    LEFT JOIN R.branches AS branch WITH branch IS NULL OR branch.name LIKE :branch 
WHERE R.category.name LIKE :category 

欲了解更多信息,看看documentation

+0

我编辑了帖子..再次检查。 :) –

+0

我编辑了答案。 –

+0

对不起,我正在使用jpa。 Jpa没有关键字..你知道JPA WITH的替代方案吗? –