public class TableImpl<R extends Record> extends Object
This type is for JOOQ INTERNAL USE only. Do not reference directly
Modifier and Type | Field and Description |
---|---|
protected Field<?>[] |
parameters |
Constructor and Description |
---|
TableImpl(String name) |
TableImpl(String name,
Schema schema) |
TableImpl(String name,
Schema schema,
Table<R> aliased) |
TableImpl(String name,
Schema schema,
Table<R> aliased,
Field<?>[] parameters) |
TableImpl(String name,
Schema schema,
Table<R> aliased,
Field<?>[] parameters,
String comment) |
Modifier and Type | Method and Description |
---|---|
void |
accept(Context<?> ctx)
|
Table<R> |
as(String as)
Subclasses may override this method to provide custom aliasing
implementations
Create an alias for this table.
|
Table<R> |
as(String as,
String... fieldAliases)
Subclasses may override this method to provide custom aliasing
implementations
Create an alias for this table and its fields
Note that the case-sensitivity of the returned table and columns depends
on
Settings.getRenderNameStyle() . |
Table<R> |
asOfScn(Field<? extends Number> scn)
Create an
SQLDialect.ORACLE flashback query clause from this
table. |
Table<R> |
asOfScn(Number scn)
Create an
SQLDialect.ORACLE flashback query clause from this
table. |
Table<R> |
asOfTimestamp(Field<Timestamp> timestamp)
Create an
SQLDialect.ORACLE flashback query clause from this
table. |
Table<R> |
asOfTimestamp(Timestamp timestamp)
Create an
SQLDialect.ORACLE flashback query clause from this
table. |
Table<R> |
asTable()
The underlying table representation of this object
This method is useful for things like
SELECT * FROM (SELECT * FROM x WHERE x.a = '1') WHERE ... |
Table<R> |
asTable(String alias)
The underlying aliased table representation of this object
|
Table<R> |
asTable(String alias,
String... fieldAliases)
The underlying aliased table representation of this object
|
Table<R> |
at(Link link)
A table reference of this table at a given
Link . |
Table<R> |
at(Name link)
A table reference of this table at a given
Link . |
Table<R> |
at(String link)
A table reference of this table at a given
Link . |
void |
bind(BindContext ctx)
Deprecated.
|
Clause[] |
clauses(Context<?> ctx)
The
Clause s that are represented by this query part. |
protected DSLContext |
create()
Internal convenience method
|
protected DSLContext |
create(Configuration configuration)
Internal convenience method
|
protected DSLContext |
create(Context<?> ctx)
Internal convenience method
|
protected <T> TableField<R,T> |
createField(String name,
DataType<T> type)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected <T> TableField<R,T> |
createField(String name,
DataType<T> type,
String comment)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected <T,U> TableField<R,U> |
createField(String name,
DataType<T> type,
String comment,
Binding<T,U> binding)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected <T,U> TableField<R,U> |
createField(String name,
DataType<T> type,
String comment,
Converter<T,U> converter)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected <T,X,U> TableField<R,U> |
createField(String name,
DataType<T> type,
String comment,
Converter<X,U> converter,
Binding<T,X> binding)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected static <R extends Record,T> |
createField(String name,
DataType<T> type,
Table<R> table)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected static <R extends Record,T> |
createField(String name,
DataType<T> type,
Table<R> table,
String comment)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected static <R extends Record,T,U> |
createField(String name,
DataType<T> type,
Table<R> table,
String comment,
Binding<T,U> binding)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected static <R extends Record,T,U> |
createField(String name,
DataType<T> type,
Table<R> table,
String comment,
Converter<T,U> converter)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
protected static <R extends Record,T,X,U> |
createField(String name,
DataType<T> type,
Table<R> table,
String comment,
Converter<X,U> converter,
Binding<T,X> binding)
Subclasses may call this method to create
TableField objects that
are linked to this table. |
Table<Record> |
crossApply(SQL sql)
CROSS APPLY a table to this table. |
Table<Record> |
crossApply(String sql)
CROSS APPLY a table to this table. |
Table<Record> |
crossApply(String sql,
Object... bindings)
CROSS APPLY a table to this table. |
Table<Record> |
crossApply(String sql,
QueryPart... parts)
CROSS APPLY a table to this table. |
Table<Record> |
crossApply(TableLike<?> table)
CROSS APPLY a table to this table. |
Table<Record> |
crossJoin(SQL sql)
CROSS JOIN a table to this table. |
Table<Record> |
crossJoin(String sql)
CROSS JOIN a table to this table. |
Table<Record> |
crossJoin(String sql,
Object... bindings)
CROSS JOIN a table to this table. |
Table<Record> |
crossJoin(String sql,
QueryPart... parts)
CROSS JOIN a table to this table. |
Table<Record> |
crossJoin(TableLike<?> table)
CROSS JOIN a table to this table. |
boolean |
declaresCTE()
Subclasses may override this
|
boolean |
declaresFields()
Subclasses may override this
|
boolean |
declaresTables()
Subclasses may override this
|
boolean |
declaresWindows()
Subclasses may override this
|
DivideByOnStep |
divideBy(Table<?> divisor)
Create a new
TABLE reference from this table, applying
relational division. |
boolean |
equals(Object that)
Check whether this
QueryPart can be considered equal to
another QueryPart . |
<T> Field<T> |
field(Field<T> field)
Get a specific field from this table.
|
Field<?> |
field(int index)
Get a specific field from this table.
|
<T> Field<T> |
field(int index,
Class<T> type)
Get a specific field from this table and coerce it to
type . |
<T> Field<T> |
field(int index,
DataType<T> dataType)
Get a specific field from this table and coerce it to
dataType . |
Field<?> |
field(Name name)
Get a specific field from this table.
|
<T> Field<T> |
field(Name name,
Class<T> type)
Get a specific field from this table and coerce it to
type . |
<T> Field<T> |
field(Name name,
DataType<T> dataType)
Get a specific field from this table and coerce it to
dataType . |
Field<?> |
field(String string)
Get a specific field from this table.
|
<T> Field<T> |
field(String name,
Class<T> type)
Get a specific field from this table and coerce it to
type . |
<T> Field<T> |
field(String name,
DataType<T> dataType)
Get a specific field from this table and coerce it to
dataType . |
Field<?>[] |
fields()
Get all fields from this table.
|
Field<?>[] |
fields(Field<?>... fields)
Get all fields from this table, providing some fields.
|
Field<?>[] |
fields(int... fieldIndexes)
Get all fields from this table, providing some field indexes.
|
Field<?>[] |
fields(Name... fieldNames)
Get all fields from this table, providing some field names.
|
Field<?>[] |
fields(String... fieldNames)
Get all fields from this table, providing some field names.
|
Row |
fieldsRow()
Get this table's fields as a
Row |
Table<R> |
forceIndex(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
forceIndexForGroupBy(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
forceIndexForJoin(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
forceIndexForOrderBy(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
TableOnStep<Record> |
fullOuterJoin(SQL sql)
FULL OUTER JOIN a table to this table. |
TableOnStep<Record> |
fullOuterJoin(String sql)
FULL OUTER JOIN a table to this table. |
TableOnStep<Record> |
fullOuterJoin(String sql,
Object... bindings)
FULL OUTER JOIN a table to this table. |
TableOnStep<Record> |
fullOuterJoin(String sql,
QueryPart... parts)
FULL OUTER JOIN a table to this table. |
TableOnStep<Record> |
fullOuterJoin(TableLike<?> table)
FULL OUTER JOIN a table to this table. |
boolean |
generatesCast()
Subclasses may override this
|
String |
getComment()
The comment given to the table.
|
Identity<R,?> |
getIdentity()
Retrieve the table's
IDENTITY information, if available. |
List<UniqueKey<R>> |
getKeys()
Retrieve all of the table's unique keys.
|
String |
getName()
The name of this table.
|
UniqueKey<R> |
getPrimaryKey()
Retrieve the table's primary key
|
TableField<R,? extends Date> |
getRecordTimestamp()
A "timestamp" field holding record timestamp information used for
optimistic locking
jOOQ supports optimistic locking in
UpdatableRecord.store() and
UpdatableRecord.delete() if
Settings.isExecuteWithOptimisticLocking() is enabled. |
Class<? extends R> |
getRecordType()
Subclasses must override this method if they use the generic type
parameter
Record
The record type produced by this table. |
TableField<R,? extends Number> |
getRecordVersion()
A "version" field holding record version information used for optimistic
locking
jOOQ supports optimistic locking in
UpdatableRecord.store() and
UpdatableRecord.delete() if
Settings.isExecuteWithOptimisticLocking() is enabled. |
List<ForeignKey<R,?>> |
getReferences()
Get the list of
FOREIGN KEY 's of this table |
<O extends Record> |
getReferencesFrom(Table<O> other)
Get a list of
FOREIGN KEY 's of a specific table, referencing
a this table. |
<O extends Record> |
getReferencesTo(Table<O> other)
Get a list of
FOREIGN KEY 's of this table, referencing a
specific table. |
Schema |
getSchema()
Get the table schema.
|
int |
hashCode()
Generate a hash code from this
QueryPart . |
Table<R> |
ignoreIndex(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
ignoreIndexForGroupBy(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
ignoreIndexForJoin(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
ignoreIndexForOrderBy(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
TableOnStep<Record> |
innerJoin(SQL sql)
INNER JOIN a table to this table. |
TableOnStep<Record> |
innerJoin(String sql)
INNER JOIN a table to this table. |
TableOnStep<Record> |
innerJoin(String sql,
Object... bindings)
INNER JOIN a table to this table. |
TableOnStep<Record> |
innerJoin(String sql,
QueryPart... parts)
INNER JOIN a table to this table. |
TableOnStep<Record> |
innerJoin(TableLike<?> table)
INNER JOIN a table to this table. |
TableOnStep<Record> |
join(SQL sql)
INNER JOIN a table to this table. |
TableOnStep<Record> |
join(String sql)
INNER JOIN a table to this table. |
TableOnStep<Record> |
join(String sql,
Object... bindings)
INNER JOIN a table to this table. |
TableOnStep<Record> |
join(String sql,
QueryPart... parts)
INNER JOIN a table to this table. |
TableOnStep<Record> |
join(TableLike<?> table)
INNER JOIN a table to this table. |
TableOptionalOnStep<Record> |
join(TableLike<?> table,
JoinType type)
Join a table to this table using a
JoinType
Depending on the JoinType , a subsequent
TableOnStep.on(Condition...) or
TableOnStep.using(Field...) clause is required. |
TableOnStep<R> |
leftAntiJoin(TableLike<?> table)
A synthetic
LEFT ANTI JOIN clause that translates to an
equivalent NOT EXISTS predicate. |
TablePartitionByStep<Record> |
leftJoin(SQL sql)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftJoin(String sql)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftJoin(String sql,
Object... bindings)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftJoin(String sql,
QueryPart... parts)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftJoin(TableLike<?> table)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftOuterJoin(SQL sql)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftOuterJoin(String sql)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftOuterJoin(String sql,
Object... bindings)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftOuterJoin(String sql,
QueryPart... parts)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
leftOuterJoin(TableLike<?> table)
LEFT OUTER JOIN a table to this table. |
TableOnStep<R> |
leftSemiJoin(TableLike<?> table)
A synthetic
LEFT SEMI JOIN clause that translates to an
equivalent EXISTS predicate. |
Table<Record> |
naturalJoin(SQL sql)
NATURAL JOIN a table to this table. |
Table<Record> |
naturalJoin(String sql)
NATURAL JOIN a table to this table. |
Table<Record> |
naturalJoin(String sql,
Object... bindings)
NATURAL JOIN a table to this table. |
Table<Record> |
naturalJoin(String sql,
QueryPart... parts)
NATURAL JOIN a table to this table. |
Table<Record> |
naturalJoin(TableLike<?> table)
NATURAL JOIN a table to this table. |
Table<Record> |
naturalLeftOuterJoin(SQL sql)
NATURAL LEFT OUTER JOIN a table to this table. |
Table<Record> |
naturalLeftOuterJoin(String sql)
NATURAL LEFT OUTER JOIN a table to this table. |
Table<Record> |
naturalLeftOuterJoin(String sql,
Object... bindings)
NATURAL LEFT OUTER JOIN a table to this table. |
Table<Record> |
naturalLeftOuterJoin(String sql,
QueryPart... parts)
NATURAL LEFT OUTER JOIN a table to this table. |
Table<Record> |
naturalLeftOuterJoin(TableLike<?> table)
NATURAL LEFT OUTER JOIN a table to this table. |
Table<Record> |
naturalRightOuterJoin(SQL sql)
NATURAL RIGHT OUTER JOIN a table to this table. |
Table<Record> |
naturalRightOuterJoin(String sql)
NATURAL RIGHT OUTER JOIN a table to this table. |
Table<Record> |
naturalRightOuterJoin(String sql,
Object... bindings)
NATURAL RIGHT OUTER JOIN a table to this table. |
Table<Record> |
naturalRightOuterJoin(String sql,
QueryPart... parts)
NATURAL RIGHT OUTER JOIN a table to this table. |
Table<Record> |
naturalRightOuterJoin(TableLike<?> table)
NATURAL RIGHT OUTER JOIN a table to this table. |
R |
newRecord()
Create a new
Record of this table's type. |
Table<Record> |
outerApply(SQL sql)
OUTER APPLY a table to this table. |
Table<Record> |
outerApply(String sql)
OUTER APPLY a table to this table. |
Table<Record> |
outerApply(String sql,
Object... bindings)
OUTER APPLY a table to this table. |
Table<Record> |
outerApply(String sql,
QueryPart... parts)
OUTER APPLY a table to this table. |
Table<Record> |
outerApply(TableLike<?> table)
OUTER APPLY a table to this table. |
PivotForStep |
pivot(Collection<? extends Field<?>> aggregateFunctions)
Create a new
TABLE reference from this table, pivoting it
into another form. |
PivotForStep |
pivot(Field<?>... aggregateFunctions)
Create a new
TABLE reference from this table, pivoting it
into another form. |
RecordType<R> |
recordType()
The record type produced by this table.
|
TablePartitionByStep<Record> |
rightJoin(SQL sql)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightJoin(String sql)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightJoin(String sql,
Object... bindings)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightJoin(String sql,
QueryPart... parts)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightJoin(TableLike<?> table)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightOuterJoin(SQL sql)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightOuterJoin(String sql)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightOuterJoin(String sql,
Object... bindings)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightOuterJoin(String sql,
QueryPart... parts)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep<Record> |
rightOuterJoin(TableLike<?> table)
RIGHT OUTER JOIN a table to this table. |
TableOptionalOnStep<Record> |
straightJoin(SQL sql)
STRAIGHT_JOIN a table to this table. |
TableOptionalOnStep<Record> |
straightJoin(String sql)
STRAIGHT_JOIN a table to this table. |
TableOptionalOnStep<Record> |
straightJoin(String sql,
Object... bindings)
STRAIGHT_JOIN a table to this table. |
TableOptionalOnStep<Record> |
straightJoin(String sql,
QueryPart... parts)
STRAIGHT_JOIN a table to this table. |
TableOptionalOnStep<Record> |
straightJoin(TableLike<?> table)
STRAIGHT_JOIN a table to this table. |
void |
toSQL(RenderContext ctx)
Deprecated.
|
String |
toString()
Render a SQL string of this
QueryPart
For improved debugging, this renders a SQL string of this
QueryPart with inlined bind variables. |
protected DataAccessException |
translate(String sql,
SQLException e)
Internal convenience method
|
Table<R> |
useIndex(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
useIndexForGroupBy(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
useIndexForJoin(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
Table<R> |
useIndexForOrderBy(String... indexes)
Specify a MySQL style table hint for query optimisation.
|
VersionsBetweenAndStep<R,Number> |
versionsBetweenScn(Field<? extends Number> scn)
Create an
SQLDialect.ORACLE flashback versions query clause from
this table. |
VersionsBetweenAndStep<R,Number> |
versionsBetweenScn(Number scn)
Create an
SQLDialect.ORACLE flashback versions query clause from
this table. |
VersionsBetweenAndStep<R,Number> |
versionsBetweenScnMinvalue()
Create an
SQLDialect.ORACLE flashback versions query clause from
this table. |
VersionsBetweenAndStep<R,Timestamp> |
versionsBetweenTimestamp(Field<Timestamp> timestamp)
Create an
SQLDialect.ORACLE flashback versions query clause from
this table. |
VersionsBetweenAndStep<R,Timestamp> |
versionsBetweenTimestamp(Timestamp timestamp)
Create an
SQLDialect.ORACLE flashback versions query clause from
this table. |
VersionsBetweenAndStep<R,Timestamp> |
versionsBetweenTimestampMinvalue()
Create an
SQLDialect.ORACLE flashback versions query clause from
this table. |
Table<R> |
with(String hint)
Specify a SQL Server style table hint for query optimisation.
|
protected final Field<?>[] parameters
public TableImpl(String name)
public final Clause[] clauses(Context<?> ctx)
QueryPartInternal
Clause
s that are represented by this query part.
QueryPart
s can specify several Clause
s for which an
event will be emitted before
(in forward
order) and after
(in reverse order) visiting
the the query part through Context.visit(QueryPart)
This method is for JOOQ INTERNAL USE only. Do not reference directly
clauses
in interface QueryPartInternal
Clause
s represented by this query part or
null
or an empty array if this query part does not
represent a clause.public final void accept(Context<?> ctx)
QueryPartInternal
QueryPart
can accept
a Context
object
in order to render a SQL string or to bind its variables.accept
in interface QueryPartInternal
public Table<R> as(String as)
Create an alias for this table.
Note that the case-sensitivity of the returned table depends on
Settings.getRenderNameStyle()
. By default, table aliases are
quoted, and thus case-sensitive!
as
- The alias namepublic Table<R> as(String as, String... fieldAliases)
Create an alias for this table and its fields
Note that the case-sensitivity of the returned table and columns depends
on Settings.getRenderNameStyle()
. By default, table aliases are
quoted, and thus case-sensitive!
Note, not all databases support derived column lists for their table
aliases. On the other hand, some databases do support derived column
lists, but only for derived tables. jOOQ will try to turn table
references into derived tables to make this syntax work. In other words,
the following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres)
SELECT t.a, t.b
FROM my_table t(a, b)
-- Nesting table references within derived tables (e.g. SQL Server)
SELECT t.a, t.b
FROM (
SELECT * FROM my_table
) t(a, b)
Other databases may not support derived column lists at all, but they do
support common table expressions. The following statements are
equivalent:
-- Using derived column lists to rename columns (e.g. Postgres)
SELECT t.a, t.b
FROM (
SELECT 1, 2
) AS t(a, b)
-- Using UNION ALL to produce column names (e.g. MySQL)
SELECT t.a, t.b
FROM (
SELECT null a, null b FROM DUAL WHERE 1 = 0
UNION ALL
SELECT 1, 2 FROM DUAL
) t
as
- The alias namefieldAliases
- The field aliases. Excess aliases are ignored,
missing aliases will be substituted by this table's field
names.public Class<? extends R> getRecordType()
Record
The record type produced by this table.
public boolean declaresTables()
declaresTables
in interface QueryPartInternal
public boolean equals(Object that)
QueryPart
QueryPart
can be considered equal to
another QueryPart
.
In general, QueryPart
equality is defined in terms of
QueryPart.toString()
equality. In other words, two query parts are
considered equal if their rendered SQL (with inlined bind variables) is
equal. This means that the two query parts do not necessarily have to be
of the same type.
Some QueryPart
implementations may choose to override this
behaviour for improved performance, as QueryPart.toString()
is an
expensive operation, if called many times.
public final RecordType<R> recordType()
Table
recordType
in interface Table<R extends Record>
public final R newRecord()
Table
Record
of this table's type.newRecord
in interface Table<R extends Record>
DSLContext.newRecord(Table)
public final Row fieldsRow()
TableLike
Row
public final <T> Field<T> field(Field<T> field)
TableLike
field
in interface TableLike<R extends Record>
Row.field(Field)
public final Field<?> field(String string)
TableLike
field
in interface TableLike<R extends Record>
Row.field(String)
public final <T> Field<T> field(String name, Class<T> type)
TableLike
type
.field
in interface TableLike<R extends Record>
Row.field(String, Class)
public final <T> Field<T> field(String name, DataType<T> dataType)
TableLike
dataType
.field
in interface TableLike<R extends Record>
Row.field(String, DataType)
public final Field<?> field(Name name)
TableLike
field
in interface TableLike<R extends Record>
Row.field(Name)
public final <T> Field<T> field(Name name, Class<T> type)
TableLike
type
.field
in interface TableLike<R extends Record>
Row.field(Name, Class)
public final <T> Field<T> field(Name name, DataType<T> dataType)
TableLike
dataType
.field
in interface TableLike<R extends Record>
Row.field(Name, DataType)
public final Field<?> field(int index)
TableLike
field
in interface TableLike<R extends Record>
Row.field(int)
public final <T> Field<T> field(int index, Class<T> type)
TableLike
type
.field
in interface TableLike<R extends Record>
Row.field(int, Class)
public final <T> Field<T> field(int index, DataType<T> dataType)
TableLike
dataType
.field
in interface TableLike<R extends Record>
Row.field(int, DataType)
public final Field<?>[] fields()
TableLike
fields
in interface TableLike<R extends Record>
Row.fields()
public final Field<?>[] fields(Field<?>... fields)
TableLike
fields
in interface TableLike<R extends Record>
Row.fields(Field...)
public final Field<?>[] fields(String... fieldNames)
TableLike
fields
in interface TableLike<R extends Record>
Row.fields(String...)
public final Field<?>[] fields(Name... fieldNames)
TableLike
fields
in interface TableLike<R extends Record>
Row.fields(Name...)
public final Field<?>[] fields(int... fieldIndexes)
TableLike
fields
in interface TableLike<R extends Record>
Row.fields(int...)
public final Table<R> asTable()
TableLike
This method is useful for things like
SELECT * FROM (SELECT * FROM x WHERE x.a = '1') WHERE ...
public final Table<R> asTable(String alias)
TableLike
asTable
in interface TableLike<R extends Record>
Table.as(String)
public final Table<R> asTable(String alias, String... fieldAliases)
TableLike
asTable
in interface TableLike<R extends Record>
Table.as(String, String...)
public final Schema getSchema()
Table
public final String getName()
Table
public final String getComment()
Table
If this Table
is a generated table from your database, it
may provide its DDL comment through this method. All other table
expressions return the empty string ""
here, never
null
.
getComment
in interface Table<R extends Record>
public Identity<R,?> getIdentity()
IDENTITY
information, if available.
With SQL:2003, the concept of IDENTITY
columns was
introduced in most RDBMS. These are special kinds of columns that have
auto-increment functionality when INSERT
statements are
performed.
An IDENTITY
column is usually part of the
PRIMARY KEY
or of a UNIQUE KEY
in the table,
although in some RDBMS, this is not required. There can only be at most
one IDENTITY
column.
Note: Unfortunately, this is not supported in the Oracle dialect, where identities emulated by triggers cannot be formally detected.
Subclasses should override this method
getIdentity
in interface Table<R extends Record>
IDENTITY
information, or
null
, if no such information is available.public UniqueKey<R> getPrimaryKey()
Subclasses may override this method
getPrimaryKey
in interface Table<R extends Record>
null
for an updatable
table.public TableField<R,? extends Number> getRecordVersion()
jOOQ supports optimistic locking in UpdatableRecord.store()
and
UpdatableRecord.delete()
if
Settings.isExecuteWithOptimisticLocking()
is enabled. Optimistic
locking is performed in a single UPDATE
or
DELETE
statement if tables provide a "version" or
"timestamp" field, or in two steps using an additional
SELECT .. FOR UPDATE
statement otherwise.
This method is overridden in generated subclasses if their corresponding tables have been configured accordingly. A table may have both a "version" and a "timestamp" field.
Subclasses may override this method
getRecordVersion
in interface Table<R extends Record>
null
, if this table has no
"version" field.Table.getRecordTimestamp()
,
UpdatableRecord.store()
,
UpdatableRecord.delete()
,
Settings.isExecuteWithOptimisticLocking()
public TableField<R,? extends Date> getRecordTimestamp()
jOOQ supports optimistic locking in UpdatableRecord.store()
and
UpdatableRecord.delete()
if
Settings.isExecuteWithOptimisticLocking()
is enabled. Optimistic
locking is performed in a single UPDATE
or
DELETE
statement if tables provide a "version" or
"timestamp" field, or in two steps using an additional
SELECT .. FOR UPDATE
statement otherwise.
This method is overridden in generated subclasses if their corresponding tables have been configured accordingly. A table may have both a "version" and a "timestamp" field.
Subclasses may override this method
getRecordTimestamp
in interface Table<R extends Record>
null
, if this table has no
"timestamp" field.Table.getRecordVersion()
,
UpdatableRecord.store()
,
UpdatableRecord.delete()
,
Settings.isExecuteWithOptimisticLocking()
public List<UniqueKey<R>> getKeys()
Subclasses should override this method
getKeys
in interface Table<R extends Record>
null
. This is never empty
for a Table
with a Table.getPrimaryKey()
. This
method returns an unmodifiable list.public final <O extends Record> List<ForeignKey<O,R>> getReferencesFrom(Table<O> other)
FOREIGN KEY
's of a specific table, referencing
a this table.getReferencesFrom
in interface Table<R extends Record>
O
- The other table's record typeother
- The other table of the foreign key relationshipFOREIGN KEY
's towards an this
table. This is never null
. This method returns an
unmodifiable list.public List<ForeignKey<R,?>> getReferences()
FOREIGN KEY
's of this table
Subclasses should override this method
getReferences
in interface Table<R extends Record>
FOREIGN KEY
's. This is never
null
.public final <O extends Record> List<ForeignKey<R,O>> getReferencesTo(Table<O> other)
FOREIGN KEY
's of this table, referencing a
specific table.getReferencesTo
in interface Table<R extends Record>
O
- The other table's record typeother
- The other table of the foreign key relationshipFOREIGN KEY
's towards an other table.
This is never null
.protected static final <R extends Record,T> TableField<R,T> createField(String name, DataType<T> type, Table<R> table)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected static final <R extends Record,T> TableField<R,T> createField(String name, DataType<T> type, Table<R> table, String comment)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected static final <R extends Record,T,U> TableField<R,U> createField(String name, DataType<T> type, Table<R> table, String comment, Converter<T,U> converter)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected static final <R extends Record,T,U> TableField<R,U> createField(String name, DataType<T> type, Table<R> table, String comment, Binding<T,U> binding)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected static final <R extends Record,T,X,U> TableField<R,U> createField(String name, DataType<T> type, Table<R> table, String comment, Converter<X,U> converter, Binding<T,X> binding)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected final <T> TableField<R,T> createField(String name, DataType<T> type)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected final <T> TableField<R,T> createField(String name, DataType<T> type, String comment)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected final <T,U> TableField<R,U> createField(String name, DataType<T> type, String comment, Converter<T,U> converter)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected final <T,U> TableField<R,U> createField(String name, DataType<T> type, String comment, Binding<T,U> binding)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldprotected final <T,X,U> TableField<R,U> createField(String name, DataType<T> type, String comment, Converter<X,U> converter, Binding<T,X> binding)
TableField
objects that
are linked to this table.name
- The name of the field (case-sensitive!)type
- The data type of the fieldpublic final Table<R> useIndex(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndex("MY_INDEX")
.fetch();
useIndex
in interface Table<R extends Record>
public final Table<R> useIndexForJoin(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForJoin("MY_INDEX")
.fetch();
useIndexForJoin
in interface Table<R extends Record>
public final Table<R> useIndexForOrderBy(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForOrderBy("MY_INDEX")
.fetch();
useIndexForOrderBy
in interface Table<R extends Record>
public final Table<R> useIndexForGroupBy(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForGroupBy("MY_INDEX")
.fetch();
useIndexForGroupBy
in interface Table<R extends Record>
public final Table<R> ignoreIndex(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndex("MY_INDEX")
.fetch();
ignoreIndex
in interface Table<R extends Record>
public final Table<R> ignoreIndexForJoin(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForJoin("MY_INDEX")
.fetch();
ignoreIndexForJoin
in interface Table<R extends Record>
public final Table<R> ignoreIndexForOrderBy(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForOrderBy("MY_INDEX")
.fetch();
ignoreIndexForOrderBy
in interface Table<R extends Record>
public final Table<R> ignoreIndexForGroupBy(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForGroupBy("MY_INDEX")
.fetch();
ignoreIndexForGroupBy
in interface Table<R extends Record>
public final Table<R> forceIndex(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndex("MY_INDEX")
.fetch();
forceIndex
in interface Table<R extends Record>
public final Table<R> forceIndexForJoin(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForJoin("MY_INDEX")
.fetch();
forceIndexForJoin
in interface Table<R extends Record>
public final Table<R> forceIndexForOrderBy(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForOrderBy("MY_INDEX")
.fetch();
forceIndexForOrderBy
in interface Table<R extends Record>
public final Table<R> forceIndexForGroupBy(String... indexes)
Table
Example:
create.select()
.from(BOOK.as("b").useIndexForGroupBy("MY_INDEX")
.fetch();
forceIndexForGroupBy
in interface Table<R extends Record>
public final Table<R> with(String hint)
Table
This makes sense only on an actual database table or view, not on other composed table sources.
Example:
create.select()
.from(BOOK.as("b").with("READUNCOMMITTED")
.fetch();
For SQLDialect.ORACLE
style hints, see
SelectFromStep.hint(String)
and SelectQuery.addHint(String)
with
in interface Table<R extends Record>
SelectFromStep.hint(String)
,
SelectQuery.addHint(String)
public final Table<R> at(String link)
Table
Link
.at
in interface Table<R extends Record>
DSL.link(String)
public final Table<R> at(Name link)
Table
Link
.at
in interface Table<R extends Record>
DSL.link(Name)
public final Table<R> at(Link link)
Table
Link
.public final PivotForStep pivot(Field<?>... aggregateFunctions)
Table
TABLE
reference from this table, pivoting it
into another form.
This has been observed to work with
SQLDialect.ORACLE11G
upwardsSQLDialect.SQLSERVER
(not yet officially supported)public final PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions)
Table
TABLE
reference from this table, pivoting it
into another form.
For more details, see Table.pivot(Field...)
pivot
in interface Table<R extends Record>
aggregateFunctions
- The aggregate functions used for pivoting.PIVOT
expressionTable.pivot(Field...)
public final VersionsBetweenAndStep<R,Number> versionsBetweenScn(Number scn)
Table
SQLDialect.ORACLE
flashback versions query clause from
this table.versionsBetweenScn
in interface Table<R extends Record>
public final VersionsBetweenAndStep<R,Number> versionsBetweenScn(Field<? extends Number> scn)
Table
SQLDialect.ORACLE
flashback versions query clause from
this table.versionsBetweenScn
in interface Table<R extends Record>
public final VersionsBetweenAndStep<R,Number> versionsBetweenScnMinvalue()
Table
SQLDialect.ORACLE
flashback versions query clause from
this table.versionsBetweenScnMinvalue
in interface Table<R extends Record>
public final VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestamp(Timestamp timestamp)
Table
SQLDialect.ORACLE
flashback versions query clause from
this table.versionsBetweenTimestamp
in interface Table<R extends Record>
public final VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestamp(Field<Timestamp> timestamp)
Table
SQLDialect.ORACLE
flashback versions query clause from
this table.versionsBetweenTimestamp
in interface Table<R extends Record>
public final VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestampMinvalue()
Table
SQLDialect.ORACLE
flashback versions query clause from
this table.versionsBetweenTimestampMinvalue
in interface Table<R extends Record>
public final Table<R> asOfScn(Number scn)
Table
SQLDialect.ORACLE
flashback query clause from this
table.public final Table<R> asOfScn(Field<? extends Number> scn)
Table
SQLDialect.ORACLE
flashback query clause from this
table.public final Table<R> asOfTimestamp(Timestamp timestamp)
Table
SQLDialect.ORACLE
flashback query clause from this
table.asOfTimestamp
in interface Table<R extends Record>
public final Table<R> asOfTimestamp(Field<Timestamp> timestamp)
Table
SQLDialect.ORACLE
flashback query clause from this
table.asOfTimestamp
in interface Table<R extends Record>
public final DivideByOnStep divideBy(Table<?> divisor)
Table
TABLE
reference from this table, applying
relational division.
Relational division is the inverse of a cross join operation. The
following is an approximate definition of a relational division:
Assume the following cross join / cartesian product
C = A × B
Then it can be said that
A = C ÷ B
B = C ÷ A
With jOOQ, you can simplify using relational divisions by using the
following syntax:
C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)
The above roughly translates to
SELECT DISTINCT C.TEXT FROM C "c1"
WHERE NOT EXISTS (
SELECT 1 FROM B
WHERE NOT EXISTS (
SELECT 1 FROM C "c2"
WHERE "c2".TEXT = "c1".TEXT
AND "c2".ID = B.C_ID
)
)
Or in plain text: Find those TEXT values in C whose ID's correspond to
all ID's in B. Note that from the above SQL statement, it is immediately
clear that proper indexing is of the essence. Be sure to have indexes on
all columns referenced from the on(...)
and
returning(...)
clauses.
For more information about relational division and some nice, real-life examples, see
This has been observed to work with all dialects
public final TableOnStep<R> leftSemiJoin(TableLike<?> table)
Table
LEFT SEMI JOIN
clause that translates to an
equivalent EXISTS
predicate.
The following two SQL snippets are semantically equivalent:
-- Using LEFT SEMI JOIN
FROM A
LEFT SEMI JOIN B
ON A.ID = B.ID
-- Using WHERE EXISTS
FROM A
WHERE EXISTS (
SELECT 1 FROM B WHERE A.ID = B.ID
)
leftSemiJoin
in interface Table<R extends Record>
public final TableOnStep<R> leftAntiJoin(TableLike<?> table)
Table
LEFT ANTI JOIN
clause that translates to an
equivalent NOT EXISTS
predicate.
The following two SQL snippets are semantically equivalent:
-- Using LEFT ANTI JOIN
FROM A
LEFT ANTI JOIN B
ON A.ID = B.ID
-- Using WHERE NOT EXISTS
FROM A
WHERE NOT EXISTS (
SELECT 1 FROM B WHERE A.ID = B.ID
)
leftAntiJoin
in interface Table<R extends Record>
public final TableOptionalOnStep<Record> join(TableLike<?> table, JoinType type)
Table
JoinType
Depending on the JoinType
, a subsequent
TableOnStep.on(Condition...)
or
TableOnStep.using(Field...)
clause is required. If it is required
but omitted, a DSL.trueCondition()
, i.e. 1 = 1
condition will be rendered
public final TableOnStep<Record> join(TableLike<?> table)
Table
INNER JOIN
a table to this table.
A synonym for Table.innerJoin(TableLike)
.
join
in interface Table<R extends Record>
Table.innerJoin(TableLike)
public final TableOnStep<Record> join(SQL sql)
Table
INNER JOIN
a table to this table.
A synonym for Table.innerJoin(String)
.
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!
join
in interface Table<R extends Record>
DSL.table(SQL)
,
Table.innerJoin(SQL)
,
SQL
public final TableOnStep<Record> join(String sql)
Table
INNER JOIN
a table to this table.
A synonym for Table.innerJoin(String)
.
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!
join
in interface Table<R extends Record>
DSL.table(String)
,
Table.innerJoin(String)
,
SQL
public final TableOnStep<Record> join(String sql, Object... bindings)
Table
INNER JOIN
a table to this table.
A synonym for Table.innerJoin(String, Object...)
.
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!
join
in interface Table<R extends Record>
DSL.table(String, Object...)
,
Table.innerJoin(String, Object...)
,
SQL
public final TableOnStep<Record> join(String sql, QueryPart... parts)
Table
INNER JOIN
a table to this table.
A synonym for Table.innerJoin(String, QueryPart...)
.
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!
join
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
Table.innerJoin(String, QueryPart...)
,
SQL
public final TableOnStep<Record> innerJoin(TableLike<?> table)
Table
INNER JOIN
a table to this table.public final TableOnStep<Record> innerJoin(SQL sql)
Table
INNER JOIN
a table to this table.
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!
innerJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final TableOnStep<Record> innerJoin(String sql)
Table
INNER JOIN
a table to this table.
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!
innerJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final TableOnStep<Record> innerJoin(String sql, Object... bindings)
Table
INNER JOIN
a table to this table.
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!
innerJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final TableOnStep<Record> innerJoin(String sql, QueryPart... parts)
Table
INNER JOIN
a table to this table.
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!
innerJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final TablePartitionByStep<Record> leftJoin(TableLike<?> table)
Table
LEFT OUTER JOIN
a table to this table.
A synonym for Table.leftOuterJoin(TableLike)
.
leftJoin
in interface Table<R extends Record>
Table.leftOuterJoin(TableLike)
public final TablePartitionByStep<Record> leftJoin(SQL sql)
Table
LEFT OUTER JOIN
a table to this table.
A synonym for Table.leftOuterJoin(String)
.
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!
leftJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
Table.leftOuterJoin(SQL)
,
SQL
public final TablePartitionByStep<Record> leftJoin(String sql)
Table
LEFT OUTER JOIN
a table to this table.
A synonym for Table.leftOuterJoin(String)
.
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!
leftJoin
in interface Table<R extends Record>
DSL.table(String)
,
Table.leftOuterJoin(String)
,
SQL
public final TablePartitionByStep<Record> leftJoin(String sql, Object... bindings)
Table
LEFT OUTER JOIN
a table to this table.
A synonym for Table.leftOuterJoin(String, Object...)
.
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!
leftJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
Table.leftOuterJoin(String, Object...)
,
SQL
public final TablePartitionByStep<Record> leftJoin(String sql, QueryPart... parts)
Table
LEFT OUTER JOIN
a table to this table.
A synonym for Table.leftOuterJoin(String, QueryPart...)
.
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!
leftJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
Table.leftOuterJoin(String, QueryPart...)
,
SQL
public final TablePartitionByStep<Record> leftOuterJoin(TableLike<?> table)
Table
LEFT OUTER JOIN
a table to this table.leftOuterJoin
in interface Table<R extends Record>
public final TablePartitionByStep<Record> leftOuterJoin(SQL sql)
Table
LEFT OUTER JOIN
a table to this table.
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!
leftOuterJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final TablePartitionByStep<Record> leftOuterJoin(String sql)
Table
LEFT OUTER JOIN
a table to this table.
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!
leftOuterJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final TablePartitionByStep<Record> leftOuterJoin(String sql, Object... bindings)
Table
LEFT OUTER JOIN
a table to this table.
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!
leftOuterJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final TablePartitionByStep<Record> leftOuterJoin(String sql, QueryPart... parts)
Table
LEFT OUTER JOIN
a table to this table.
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!
leftOuterJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final TablePartitionByStep<Record> rightJoin(TableLike<?> table)
Table
RIGHT OUTER JOIN
a table to this table.
A synonym for Table.rightOuterJoin(TableLike)
.
This is only possible where the underlying RDBMS supports it.
rightJoin
in interface Table<R extends Record>
Table.rightOuterJoin(TableLike)
public final TablePartitionByStep<Record> rightJoin(SQL sql)
Table
RIGHT OUTER JOIN
a table to this table.
A synonym for Table.rightOuterJoin(String)
.
This is only possible where the underlying RDBMS supports it.
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!
rightJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
Table.rightOuterJoin(SQL)
,
SQL
public final TablePartitionByStep<Record> rightJoin(String sql)
Table
RIGHT OUTER JOIN
a table to this table.
A synonym for Table.rightOuterJoin(String)
.
This is only possible where the underlying RDBMS supports it.
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!
rightJoin
in interface Table<R extends Record>
DSL.table(String)
,
Table.rightOuterJoin(String)
,
SQL
public final TablePartitionByStep<Record> rightJoin(String sql, Object... bindings)
Table
RIGHT OUTER JOIN
a table to this table.
A synonym for Table.rightOuterJoin(String, Object...)
.
This is only possible where the underlying RDBMS supports it.
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!
rightJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
Table.rightOuterJoin(String, Object...)
,
SQL
public final TablePartitionByStep<Record> rightJoin(String sql, QueryPart... parts)
Table
RIGHT OUTER JOIN
a table to this table.
A synonym for Table.rightOuterJoin(String, QueryPart...)
.
This is only possible where the underlying RDBMS supports it
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!
rightJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
Table.rightOuterJoin(String, QueryPart...)
,
SQL
public final TablePartitionByStep<Record> rightOuterJoin(TableLike<?> table)
Table
RIGHT OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
rightOuterJoin
in interface Table<R extends Record>
public final TablePartitionByStep<Record> rightOuterJoin(SQL sql)
Table
RIGHT OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
rightOuterJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final TablePartitionByStep<Record> rightOuterJoin(String sql)
Table
RIGHT OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
rightOuterJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final TablePartitionByStep<Record> rightOuterJoin(String sql, Object... bindings)
Table
RIGHT OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
rightOuterJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final TablePartitionByStep<Record> rightOuterJoin(String sql, QueryPart... parts)
Table
RIGHT OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
rightOuterJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final TableOnStep<Record> fullOuterJoin(TableLike<?> table)
Table
FULL OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
fullOuterJoin
in interface Table<R extends Record>
public final TableOnStep<Record> fullOuterJoin(SQL sql)
Table
FULL OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
fullOuterJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final TableOnStep<Record> fullOuterJoin(String sql)
Table
FULL OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
fullOuterJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final TableOnStep<Record> fullOuterJoin(String sql, Object... bindings)
Table
FULL OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
fullOuterJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final TableOnStep<Record> fullOuterJoin(String sql, QueryPart... parts)
Table
FULL OUTER JOIN
a table to this table.
This is only possible where the underlying RDBMS supports it
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!
fullOuterJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final Table<Record> crossJoin(TableLike<?> table)
Table
CROSS JOIN
a table to this table.
If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:
A cross join B
A join B on 1 = 1
public final Table<Record> crossJoin(SQL sql)
Table
CROSS JOIN
a table to this table.
If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:
A cross join B
A join B on 1 = 1
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!
crossJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final Table<Record> crossJoin(String sql)
Table
CROSS JOIN
a table to this table.
If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:
A cross join B
A join B on 1 = 1
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!
crossJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final Table<Record> crossJoin(String sql, Object... bindings)
Table
CROSS JOIN
a table to this table.
If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:
A cross join B
A join B on 1 = 1
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!
crossJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final Table<Record> crossJoin(String sql, QueryPart... parts)
Table
CROSS JOIN
a table to this table.
If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:
A cross join B
A join B on 1 = 1
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!
crossJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final Table<Record> naturalJoin(TableLike<?> table)
Table
NATURAL JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
naturalJoin
in interface Table<R extends Record>
public final Table<Record> naturalJoin(SQL sql)
Table
NATURAL JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final Table<Record> naturalJoin(String sql)
Table
NATURAL JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final Table<Record> naturalJoin(String sql, Object... bindings)
Table
NATURAL JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final Table<Record> naturalJoin(String sql, QueryPart... parts)
Table
NATURAL JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final Table<Record> naturalLeftOuterJoin(TableLike<?> table)
Table
NATURAL LEFT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
naturalLeftOuterJoin
in interface Table<R extends Record>
public final Table<Record> naturalLeftOuterJoin(SQL sql)
Table
NATURAL LEFT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalLeftOuterJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final Table<Record> naturalLeftOuterJoin(String sql)
Table
NATURAL LEFT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalLeftOuterJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final Table<Record> naturalLeftOuterJoin(String sql, Object... bindings)
Table
NATURAL LEFT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalLeftOuterJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final Table<Record> naturalLeftOuterJoin(String sql, QueryPart... parts)
Table
NATURAL LEFT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalLeftOuterJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final Table<Record> naturalRightOuterJoin(TableLike<?> table)
Table
NATURAL RIGHT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
naturalRightOuterJoin
in interface Table<R extends Record>
public final Table<Record> naturalRightOuterJoin(SQL sql)
Table
NATURAL RIGHT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalRightOuterJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final Table<Record> naturalRightOuterJoin(String sql)
Table
NATURAL RIGHT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalRightOuterJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final Table<Record> naturalRightOuterJoin(String sql, Object... bindings)
Table
NATURAL RIGHT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalRightOuterJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final Table<Record> naturalRightOuterJoin(String sql, QueryPart... parts)
Table
NATURAL RIGHT OUTER JOIN
a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
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!
naturalRightOuterJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final Table<Record> crossApply(TableLike<?> table)
Table
CROSS APPLY
a table to this table.crossApply
in interface Table<R extends Record>
public final Table<Record> crossApply(SQL sql)
Table
CROSS APPLY
a table to this table.
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!
crossApply
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final Table<Record> crossApply(String sql)
Table
CROSS APPLY
a table to this table.
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!
crossApply
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final Table<Record> crossApply(String sql, Object... bindings)
Table
CROSS APPLY
a table to this table.
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!
crossApply
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final Table<Record> crossApply(String sql, QueryPart... parts)
Table
CROSS APPLY
a table to this table.
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!
crossApply
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final Table<Record> outerApply(TableLike<?> table)
Table
OUTER APPLY
a table to this table.outerApply
in interface Table<R extends Record>
public final Table<Record> outerApply(SQL sql)
Table
OUTER APPLY
a table to this table.
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!
outerApply
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final Table<Record> outerApply(String sql)
Table
OUTER APPLY
a table to this table.
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!
outerApply
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final Table<Record> outerApply(String sql, Object... bindings)
Table
OUTER APPLY
a table to this table.
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!
outerApply
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final Table<Record> outerApply(String sql, QueryPart... parts)
Table
OUTER APPLY
a table to this table.
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!
outerApply
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public final TableOptionalOnStep<Record> straightJoin(TableLike<?> table)
Table
STRAIGHT_JOIN
a table to this table.straightJoin
in interface Table<R extends Record>
public final TableOptionalOnStep<Record> straightJoin(SQL sql)
Table
STRAIGHT_JOIN
a table to this table.
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!
straightJoin
in interface Table<R extends Record>
DSL.table(SQL)
,
SQL
public final TableOptionalOnStep<Record> straightJoin(String sql)
Table
STRAIGHT_JOIN
a table to this table.
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!
straightJoin
in interface Table<R extends Record>
DSL.table(String)
,
SQL
public final TableOptionalOnStep<Record> straightJoin(String sql, Object... bindings)
Table
STRAIGHT_JOIN
a table to this table.
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!
straightJoin
in interface Table<R extends Record>
DSL.table(String, Object...)
,
SQL
public final TableOptionalOnStep<Record> straightJoin(String sql, QueryPart... parts)
Table
STRAIGHT_JOIN
a table to this table.
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!
straightJoin
in interface Table<R extends Record>
DSL.table(String, QueryPart...)
,
SQL
public int hashCode()
QueryPart
QueryPart
.
In general, QueryPart
hash codes are the same as the hash
codes generated from QueryPart.toString()
. This guarantees consistent
behaviour with QueryPart.equals(Object)
Some QueryPart
implementations may choose to override this
behaviour for improved performance, as QueryPart.toString()
is an
expensive operation, if called many times.
@Deprecated public void toSQL(RenderContext ctx)
QueryPartInternal
QueryPart
to a SQL string contained in
context.sql()
. The context
will contain
additional information about how to render this QueryPart
,
e.g. whether this QueryPart
should be rendered as a
declaration or reference, whether this QueryPart
's contained
bind variables should be inlined or replaced by '?'
, etc.toSQL
in interface QueryPartInternal
@Deprecated public void bind(BindContext ctx) throws DataAccessException
QueryPartInternal
QueryPart
to a PreparedStatement
This method is for JOOQ INTERNAL USE only. Do not reference directly
bind
in interface QueryPartInternal
ctx
- The context holding the next bind index and other information
for variable bindingDataAccessException
- If something went wrong while binding a
variablepublic boolean declaresFields()
declaresFields
in interface QueryPartInternal
public boolean declaresWindows()
declaresWindows
in interface QueryPartInternal
public boolean declaresCTE()
declaresCTE
in interface QueryPartInternal
public boolean generatesCast()
generatesCast
in interface QueryPartInternal
public String toString()
QueryPart
QueryPart
For improved debugging, this renders a SQL string of this
QueryPart
with inlined bind variables. If you wish to gain
more control over the concrete SQL rendering of this
QueryPart
, use DSLContext.renderContext()
to obtain a
configurable render context for SQL rendering.
protected final DSLContext create()
protected final DSLContext create(Configuration configuration)
protected final DSLContext create(Context<?> ctx)
protected final DataAccessException translate(String sql, SQLException e)
Copyright © 2016. All Rights Reserved.