title: JPA criteria JOIN: what does {oj ...} mean in SQL?
body: <p>I learn JPA and tried the following code:</p>
  
  <pre><code>CriteriaBuilder queryBuilder = em.getCriteriaBuilder();
  CriteriaQuery&lt;PersonDI&gt; criteriaQuery = queryBuilder.createQuery(PersonDI.class);
  Root&lt;PersonDI&gt; personDI = criteriaQuery.from(PersonDI.class);
  Fetch&lt;PersonDI, ContactDI&gt; contactDI = personDI.fetch("contacts", JoinType.LEFT);
  criteriaQuery.where(queryBuilder.equal(personDI.get("guid"), guids.get(0)));
  criteriaQuery.select(personDI).distinct(true);
  TypedQuery&lt;PersonDI&gt; query = em.createQuery(criteriaQuery);
  </code></pre>
  
  <p>So one person has many contacts. The code is working. I use H2 database and EclipseLink. However, I can't understand what <code>{oj...}</code> means in SQL. Explain please.</p>
  
  <p>This is the generated SQL:</p>
  
  <pre><code>SELECT DISTINCT t1.col0, t1.col3, t1.col1, t1.col2, t0.col0, t0.col2 FROM {oj tbl0 t1 LEFT OUTER JOIN tbl1 t0 ON (t0.col1 = t1.col0)} WHERE (t1.col0 = ?)
  </code></pre>