У меня есть 2 таблицы (сущность) сущность человека и сущность отпуска. Один человек может иметь много отпусков.
Я пытаюсь выполнить следующий запрос:
Выберите весь период лиц !, но для людей, у которых есть каникулы, я хочу выбрать все отпуска людей, у которых есть условие, чтобы просто сказать, что startDate
находится между чем-то.
Просто чтобы быть ясным, независимо от ограничений на каникулы, я все еще хочу получить всех людей. Это мой текущий запрос HQL:
select distinct p
from Person as p
left join fetch p.vacations as v
where v.startDate between '2011-07-01' and '2011-07-30'
Проблема в том, что он ограничивает возврат моих лиц только тем, у кого отпуск, который соблюдает условия ... Может кто-нибудь помочь, пожалуйста?
У меня нет проблем, если кто-то может сказать мне это в нативном SQL
ОБНОВЛЕНИЕ Решено в нативном SQL благодаря @Quasdunk:
SELECT *
FROM person as p
LEFT JOIN
(SELECT * FROM vacation
WHERE startDate BETWEEN '2011-08-01' AND '2011-08-30') as v ON v.person_id = p.id
Моя новая проблема заключается в том, как преобразовать его в HQL-запрос, чтобы я мог получать отпуска для каждого человека и для отдельных лиц (условия остаются неизменными).