Я хочу преобразовать этот простой SQL-запрос в HQL . У меня есть идея, как преобразовать запросы SQL в запросы HQL, но мой запрос содержит UNION и затем внутреннее соединение. Поэтому мне стало сложно его преобразовать.
select count(distinct T.id_veicolo) from
((select distinct C.id_veicolo from (
(select distinct id_veicolo from movement
where id_sede_uscita = 23
and annullato <> 'true'
and (((inizio >= '2019-01-05' and inizio <= '2019-01-06') and fine >= '2019-01-06')
or (inizio <= '2019-01-05' and (fine <= '2019-01-06' and fine >= '2019-01-05'))
or (inizio <= '2019-01-05' and fine >= '2019-01-06') or (inizio >= '2019-01-05' and fine <= '2019-01-06')))
UNION
(select id_veicolo from freeVehicle where id_sede = 23 and inizio <= '2019-01-05' and fine >= '2019-01-06') ) as C) as D
inner join (select id from parco_veicoli where targa = 'XXX') as R on D.id_veicolo = R.id) as T
Проблемная точка
Если в этом запросе присутствует только UNION , я могу преобразовать этот запрос в 2 подзапроса, но моя проблема в том, что после UNION мы снова используем внутреннее соединение. Что является для меня главной проблемой.
Мои требования
Я хочу получить тот же результат запроса HQL, что и этот запрос SQL. Я не хочу использовать SQL-запрос, потому что SQL-запросы не поддерживают кэширование .