Sounds great :). Since it’s a simple fix I’d like to make this my first pull 
request if that’s okay?  Should I start with a JIRA issue?

Cheers,
- hugi




> On 26. feb. 2016, at 07:19, Andrus Adamchik <[email protected]> wrote:
> 
>> if I use the same expression with a regular SelectQuery, Cayenne puts “AND” 
>> between the joins rather than commas and everything works fine.
> 
> So this means AND works on other DBs and we should simply align Select 
> transaltor with EJBQL translator. Maybe let's create a pull request for that 
> and we'll do the testing across DBs?
> 
> Andrus
> 
> 
>> On Feb 25, 2016, at 3:56 PM, Hugi Thordarson <[email protected]> wrote:
>> 
>> 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
> 

Reply via email to