2015-05-04 96 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的替代方案嗎? –