2015-05-04 5 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 от ресторана AS R LEFT JOIN R.branches AS филиал ГДЕ R.category. name LIKE: категория AND (ветвь NULL ИЛИ branch.name LIKE: branch)

Извлеките те рестораны с данным названием отрасли, а также содержащие те, которые не имеют связанных филиалов. ИЛИ, другими словами, если в любом ресторане нет ветви, кроме как вернуть его в список результатов вместе с именами, соответствующими названию искомой области.

ответ

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 с альтернативой? –

Смежные вопросы