Module org.jooq
Package org.jooq

Interface TableOnStep<R extends Record>

All Known Subinterfaces:
TableOptionalOnStep<R>, TablePartitionByStep<R>

public interface TableOnStep<R extends Record>
An intermediate type for the construction of a JOIN clause, where there must be a join criteria added using an ON clause (with a Condition), or using a USING clause (with a list of Field).

Referencing XYZ*Step types directly from client code

It is usually not recommended to reference any XYZ*Step types directly from client code, or assign them to local variables. When writing dynamic SQL, creating a statement's components dynamically, and passing them to the DSL API statically is usually a better choice. See the manual's section about dynamic SQL for details: https://www.jooq.org/doc/latest/manual/sql-building/dynamic-sql.

Drawbacks of referencing the XYZ*Step types directly:

  • They're operating on mutable implementations (as of jOOQ 3.x)
  • They're less composable and not easy to get right when dynamic SQL gets complex
  • They're less readable
  • They might have binary incompatible changes between minor releases
Author:
Lukas Eder
  • Method Details

    • on

      @NotNull @Support @NotNull TableOnConditionStep<R> on(Condition condition)
      Add an ON clause to the JOIN, connecting them with each other with Operator.AND.
    • on

      @NotNull @Support @NotNull TableOnConditionStep<R> on(Condition... conditions)
      Add an ON clause to the JOIN, connecting them with each other with Operator.AND.
    • on

      @NotNull @Support @NotNull TableOnConditionStep<R> on(Field<Boolean> condition)
      Add an ON clause to the JOIN.
    • on

      @NotNull @Support @PlainSQL @NotNull TableOnConditionStep<R> on(SQL sql)
      Add an ON clause to the JOIN.

      NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

      See Also:
    • on

      @NotNull @Support @PlainSQL @NotNull TableOnConditionStep<R> on(String sql)
      Add an ON clause to the JOIN.

      NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

      See Also:
    • on

      @NotNull @Support @PlainSQL @NotNull TableOnConditionStep<R> on(String sql, Object... bindings)
      Add an ON clause to the JOIN.

      NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

      See Also:
    • on

      @NotNull @Support @PlainSQL @NotNull TableOnConditionStep<R> on(String sql, QueryPart... parts)
      Add an ON clause to the JOIN.

      NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!

      See Also:
    • using

      @NotNull @Support @NotNull Table<Record> using(Field<?>... fields)
      Join a table with the USING(column [, column…]) syntax.

      If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.

    • using

      @NotNull @Support @NotNull Table<Record> using(Collection<? extends Field<?>> fields)
      Join a table with the USING(column [, column…]) syntax.

      If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.

    • onKey

      @NotNull @Support @NotNull TableOnConditionStep<R> onKey() throws DataAccessException
      Join the table on a non-ambiguous foreign key relationship between the two joined tables.

      See onKey(ForeignKey) for examples.

      Throws:
      DataAccessException - If there is no non-ambiguous key definition known to jOOQ. Please note that if you evolve your schema, a previously non-ambiguous ON KEY clause can suddenly become ambiguous on an existing query, so use this clause with care.
      See Also:
    • onKey

      @NotNull @Support @NotNull TableOnConditionStep<R> onKey(TableField<?,?>... keyFields) throws DataAccessException
      Join the table on a non-ambiguous foreign key relationship between the two joined tables.

      See onKey(ForeignKey) for examples.

      Throws:
      DataAccessException - If there is no non-ambiguous key definition known to jOOQ. Please note that if you evolve your schema, a previously non-ambiguous ON KEY clause can suddenly become ambiguous on an existing query, so use this clause with care.
      See Also:
    • onKey

      @NotNull @Support @NotNull TableOnConditionStep<R> onKey(ForeignKey<?,?> key)
      Join the table on a non-ambiguous foreign key relationship between the two joined tables.

      An example:

      
       // There is a single foreign key relationship between A and B and it can
       // be obtained by A.getReferencesTo(B) or vice versa. The order of A and
       // B is not important
       A.join(B).onKey();
      
       // There are several foreign key relationships between A and B. In order
       // to disambiguate, you can provide a formal org.jooq.Key reference from
       // the generated Keys class
       A.join(B).onKey(key);
      
       // There are several foreign key relationships between A and B. In order
       // to disambiguate, you can provide any non-ambiguous foreign key column
       A.join(B).onKey(B.A_ID);