Package org.apache.cayenne.access.translator.ejbql

## Class EJBQLJoinAppender

- java.lang.Object
- - org.apache.cayenne.access.translator.ejbql.EJBQLJoinAppender

-     public class EJBQLJoinAppender
      extends Object

  Handles appending joins to the content buffer at a marked position.
  Since:
    3.0

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected EJBQLTranslationContext` | `context` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `EJBQLJoinAppender​(EJBQLTranslationContext context)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `appendInnerJoin​(String marker, org.apache.cayenne.access.translator.ejbql.EJBQLTableId lhsId, org.apache.cayenne.access.translator.ejbql.EJBQLTableId rhsId)` |
    `protected void` | `appendJoin​(String marker, org.apache.cayenne.access.translator.ejbql.EJBQLTableId lhsId, org.apache.cayenne.access.translator.ejbql.EJBQLTableId rhsId, String semantics)` |
    `void` | `appendOuterJoin​(String marker, org.apache.cayenne.access.translator.ejbql.EJBQLTableId lhsId, org.apache.cayenne.access.translator.ejbql.EJBQLTableId rhsId)` |
    `String` | `appendTable​(org.apache.cayenne.access.translator.ejbql.EJBQLTableId id)` |
    `String` | `registerReusableJoin​(String sourceIdPath, String relationship, String targetId)` | Registers a "reusable" join, returning a preexisting ID if the join is already registered.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### context

          protected EJBQLTranslationContext context

  - ### Constructor Detail

    - #### EJBQLJoinAppender

          public EJBQLJoinAppender​(EJBQLTranslationContext context)

  - ### Method Detail

    - #### registerReusableJoin

          public String registerReusableJoin​(String sourceIdPath,
                                             String relationship,
                                             String targetId)

      Registers a "reusable" join, returning a preexisting ID if the join is already registered. Reusable joins are the implicit inner joins that are added as a result of processing of path expressions in SELECT or WHERE clauses. Note that if an implicit INNER join overlaps with an explicit INNER join, both joins are added to the query.

    - #### appendInnerJoin

          public void appendInnerJoin​(String marker,
                                      org.apache.cayenne.access.translator.ejbql.EJBQLTableId lhsId,
                                      org.apache.cayenne.access.translator.ejbql.EJBQLTableId rhsId)

    - #### appendOuterJoin

          public void appendOuterJoin​(String marker,
                                      org.apache.cayenne.access.translator.ejbql.EJBQLTableId lhsId,
                                      org.apache.cayenne.access.translator.ejbql.EJBQLTableId rhsId)

    - #### appendJoin

          protected void appendJoin​(String marker,
                                    org.apache.cayenne.access.translator.ejbql.EJBQLTableId lhsId,
                                    org.apache.cayenne.access.translator.ejbql.EJBQLTableId rhsId,
                                    String semantics)

    - #### appendTable

          public String appendTable​(org.apache.cayenne.access.translator.ejbql.EJBQLTableId id)