我正在使用JPQL来进行Play Framework的模型查询。
我想知道JPQL是否支持LEFT JOIN的“复杂”ON条件。
在我的例子中,有2个表:
假设我想计算不具有特定日期记录的所有应用的列表。
在纯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
当然,“开启”状态下的“和”是必不可少的。
现在,我看到的所有JPQL示例都是:
SELECT a.* FROM AggregationHistory ah LEFT JOIN ah.app a WHERE ...
那么,支持的唯一'ON'条件 - 是ID的“匹配”吗? (似乎对我帮助不大)
我可以考虑解决方法(例如,使用“本机查询”,或使用JOIN获取确实拥有记录的应用程序列表,并进行比较)。但我想知道我在SQL中创建的查询是否可以转换为JPQL。
由于
答案 0 :(得分:9)
JPQL,AFAIK,不支持ON
子句,但HQL确实支持它们。虽然选择使用with
关键字:
select a from App a
left join a.history h with h.fromDate = :fromDate
where h.fromDate is null