[ https://issues.apache.org/jira/browse/OPENJPA-547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Catalina Wei closed OPENJPA-547. -------------------------------- Resolution: Fixed > INNER JOIN Fetch query incorrectly generates LEFT join SQL > ----------------------------------------------------------- > > Key: OPENJPA-547 > URL: https://issues.apache.org/jira/browse/OPENJPA-547 > Project: OpenJPA > Issue Type: Bug > Components: query > Reporter: Catalina Wei > Assignee: Catalina Wei > Fix For: 1.0.3, 1.1.0 > > > INNER JOIN FETCH should not generate SQL LEFT join. > Example: > lineitems (ToMany, FetchType=LAZY) > Order <===================================> OrderItem > order (ToOne, FetchType=LAZY) > For Query: select o from Order left join fetch o.lineitems > SQL generated > for DB2: > SELECT t0.oid, t0.version, t0.amount, t0.delivered, t1.ORDER_OID, t1.lid, t1.version, t1.cost, t1.quantity > FROM TORDER t0 LEFT OUTER JOIN TORDERITEM t1 ON t0.oid = t1.ORDER_OID ORDER BY t1.ORDER_OID ASC > for Oracle: > SELECT t0.oid, t0.version, t0.amount, t0.delivered, t1.ORDER_OID, t1.lid, t1.version, t1.cost, t1.quantity FROM TORDER t0, TORDERITEM t1 WHERE t0.oid = t1.ORDER_OID(+) ORDER BY t1.ORDER_OID ASC > The above SQL pushdown looked good. > However, if left join fetch is changed to inner join fetch: > select o from Order o inner join fetch o.lineitems > We are generating extra redundant LEFT joins: > for DB2: > SELECT t0.oid, t0.version, t0.amount, t0.delivered, t2.ORDER_OID, t2.lid, t2.version, t2.cost, t2.quantity > FROM TORDER t0 INNER JOIN TORDERITEM t1 ON t0.oid = t1.ORDER_OID LEFT OUTER JOIN TORDERITEM t2 ON t0.oid = t2.ORDER_OID ORDER BY t2.ORDER_OID ASC > for Oracle: > SELECT t0.oid, t0.version, t0.amount, t0.delivered, t2.ORDER_OID, t2.lid, t2.version, t2.cost, t2.quantity FROM TORDER t0, TORDERITEM t1, TORDERITEM t2 WHERE t0.oid = t1.ORDER_OID AND t0.oid = t2.ORDER_OID(+) ORDER BY t2.ORDER_OID ASC > Why do we generate the extra LEFT joins even for quereis explicitly requesting INNER join fetch ? > > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.