Hi all. When Cayenne generates SQL for EJBQLQueries that use relationships with multiple joins, it puts commas between the joins in the resulting SQL-statement. This does not work with Informix (that I’m unfortunately currently using), instead it wants “AND” between the joins. Incidentally, if I use the same expression with a regular SelectQuery, Cayenne puts “AND” between the joins rather than commas and everything works fine.
For example, this doesn’t work: …FROM bok_invoice_line t0 INNER JOIN bok_invoice t1 ON (t0.company = t1.company, t0.year = t1.year) While this works: …FROM bok_invoice_line t0 INNER JOIN bok_invoice t1 ON (t0.company = t1.company AND t0.year = t1.year) I see that the generation of the join expression (and insertion of the comma) happens in EJBQLJoinAppender.generateJoiningExpression(), but creating a DB-specific EJBQLJoinAppender seems like a lot of work, since the class relies on some private APIs (like EJBQLTableId, EJBQLTranslationContext.makeEntityQualifierMarker() etc…). Does anyone have any suggestions on how I can hook into the SQL-generation process to replace that comma with an “AND" without resorting to duplicating somewhat large parts of the EJBQL SQL translation logic? Cheers, - hugi