我有一个带有类别和分支列表的餐馆实体。我想搜索特定区域和类别的所有餐馆 所以,我在做
SELECT R
FROM Restaurant AS R
LEFT JOIN R.branches AS branch
WHERE R.category.name LIKE :category AND branch.name LIKE :branch
它工作正常,但恰好是这样,当最初添加新餐厅时,餐厅没有分店,但我想在结果中显示它们。我不知道如何实现,如何获得具有匹配类别和分支的餐馆(即使它没有分支)。
如果不清楚我想做什么,我正试图做这样的事情......
SELECT R FROM Restaurant AS R LEFT JOIN R.branches AS分支 WHERE R.category.name LIKE:category AND(branch is NULL OR branch.name LIKE:branch)
检索具有给定分支名称的那些餐馆,并且还包含那些没有任何分支关联的餐馆。或者换句话说,如果任何餐馆没有任何分支,则将其返回到结果列表以及与搜索区域名称匹配的分支。
答案 0 :(得分: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。