Я использую JPQL для запросов модели из Play Framework.
Интересно, поддерживает ли JPQL "сложное" условие ON для LEFT JOIN.
В моем примере есть 2таблицы:
- 'App' - список приложений
- 'AggregationHistory' - список записей агрегации для приложения на дату.В модели есть поле «app», представляющее «многие к одному» с «App» (имя столбца «app_id» в физической таблице)
Предположим, я хочу вычислить список всехприложения, которые не имеют запись на определенную дату.
В простом SQL я получаю результат, используя следующий запрос:
SELECT a.* FROM app a LEFT JOIN aggregationhistory ah
ON a.id = ah.app_id AND ah.fromDate = '2012-03-14 00:00:00'
WHERE ah.fromDate is NULL
'AND' вКонечно, условие «ВКЛ» является обязательным.
Теперь все примеры JPQL, которые я вижу, выглядят так:
SELECT a.* FROM AggregationHistory ah LEFT JOIN ah.app a WHERE ...
Итак, единственное поддерживаемое условие «ВКЛ» - это «совпадение "из идентификаторов?(ГДЕ, кажется, мне не очень помогает)
Я могу придумать обходные пути (например, использовать "собственный запрос" или использовать JOIN, чтобы получить список приложений, которые имеют aзапись и сравнение).Но мне интересно, если запрос, который я сделал в SQL - можно преобразовать в JPQL.
Спасибо