You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Olivier Paquet (JIRA)" <ji...@apache.org> on 2014/11/17 14:34:34 UTC

[jira] [Created] (OPENJPA-2545) Joining Entites results in multiple occurences of tables in FROM clause

Olivier Paquet created OPENJPA-2545:
---------------------------------------

             Summary: Joining Entites results in multiple occurences of tables in FROM clause
                 Key: OPENJPA-2545
                 URL: https://issues.apache.org/jira/browse/OPENJPA-2545
             Project: OpenJPA
          Issue Type: Question
          Components: criteria, jpa
    Affects Versions: 2.3.0
            Reporter: Olivier Paquet
            Priority: Blocker


Hi, 

We use the Criteria API with OpenJPA to execute complex searches.
But currently I'm blocked and as I found nothing on the web or your site I wanted to ask you directly:

We have several Entites, let's say A, B, C

Currenlty we do a LEFT JOIN between A and B to get all A Entities even if there is no relation to B, it's working fine as expected.

Now we have another relation between B and C. B has just a String which represents the FK to C, so I wanted to join between B and C.

{code}
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
Root<A> clRun = query.from(A.class);
Join<A, B> bJoin = clRun.join("clearingFiles",
				JoinType.LEFT);

query.where(cb.equal(clRun.get("status"), 
ClearingRunStatus.PROCESSED));
		query.select(cb.array(clRun, bJoin ));

TypedQuery<Object[]> q = em.createQuery(query);
List<Object[]> result = q.getResultList();
{code}

{code}
SELECT ... 
FROM A t0, B t1, A t2 
WHERE (t2.STATUS = 'PROCESSED') AND t0.CLEARING_RUN_ID = t1.CLEARING_RUN_ID(+)
{code}

So without the cb.equal, A is present 1 time -> OK 
But once I add an additiona comparison to one of the attributes from A, it add the Table a second time to the query, which generates a very big join and will crash our application.

So please, is this a Bug or do I use it in a wrong way?

Greetings, Olivier



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)