知らなかった…JPA2.0ではON句が使えないのですね…ということでメモ。
JSR317のドキュメントで外部結合のところをみると例えばLEFT JOINでは以下の例があります。
※OUTERはオプションなので記述なくても同じ
SELECT c FROM Customer c LEFT OUTER JOIN c.orders o WHERE c.status = 1
このc.ordersがリレーションしてるものだから書けるようで、例えば別のテーブルで
SELECT e FROM Employee e LEFT JOIN MailingAddress a ON e.address = a.address
みたいなのは書けない…。ただし、EclipseLinkの2.4では、JPA2.1のdraftとして上記ON句の記述ができるようになってるようです。
EclipselinkでのJPQL ON句
さてさてどうしたもんか…。