@Christian: Sory, but
SELECT * FROM C c LEFT JOIN c.b b LEFT JOIN b.a WHERE c.date < a.someDate;
and
SELECT * FROM C c LEFT JOIN c.b b LEFT JOIN b.a WITH c.date < a.someDate;
are different query and make different resultset