public class TableImpl<R extends Record> extends Object
This type is for JOOQ INTERNAL USE only. Do not reference directly
| Constructor and Description |
|---|
TableImpl(String name) |
TableImpl(String name,
Schema schema) |
TableImpl(String name,
Schema schema,
Table<R> aliased) |
| Modifier and Type | Method and Description |
|---|---|
Table<R> |
as(String as)
Subclasses may override this method to provide custom aliasing
implementations
Create an alias for this table
Note that the case-sensitivity of the returned table depends on
Settings.getRenderNameStyle(). |
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> |
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
|
void |
bind(BindContext context)
Bind all parameters of this
QueryPart to a PreparedStatement
This method is for JOOQ INTERNAL USE only. |
protected DSLContext |
create()
Internal convenience method
|
protected DSLContext |
create(BindContext ctx)
Internal convenience method
|
protected DSLContext |
create(Configuration configuration)
Internal convenience method
|
protected DSLContext |
create(RenderContext ctx)
Internal convenience method
|
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. |
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 |
declaresFields()
Subclasses may override this
|
boolean |
declaresTables()
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 Record.
|
Field<?> |
field(int index)
Get a specific field from this Record.
|
Field<?> |
field(String string)
Get a specific field from this Record.
|
Field<?>[] |
fields()
Get all fields from this Record.
|
Row |
fieldsRow()
Get this table's fields as a
Row |
TableOnStep |
fullOuterJoin(String sql)
FULL OUTER JOIN a table to this table. |
TableOnStep |
fullOuterJoin(String sql,
Object... bindings)
FULL OUTER JOIN a table to this table. |
TableOnStep |
fullOuterJoin(String sql,
QueryPart... parts)
FULL OUTER JOIN a table to this table. |
TableOnStep |
fullOuterJoin(TableLike<?> table)
FULL OUTER JOIN a table to this table. |
Identity<R,? extends Number> |
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
|
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. |
TableOnStep |
join(String sql)
INNER JOIN a table to this table. |
TableOnStep |
join(String sql,
Object... bindings)
INNER JOIN a table to this table. |
TableOnStep |
join(String sql,
QueryPart... parts)
INNER JOIN a table to this table. |
TableOnStep |
join(TableLike<?> table)
INNER JOIN a table to this table. |
TableOptionalOnStep |
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. |
TablePartitionByStep |
leftOuterJoin(String sql)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep |
leftOuterJoin(String sql,
Object... bindings)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep |
leftOuterJoin(String sql,
QueryPart... parts)
LEFT OUTER JOIN a table to this table. |
TablePartitionByStep |
leftOuterJoin(TableLike<?> table)
LEFT OUTER 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(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(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. |
PivotForStep |
pivot(Collection<? extends Field<?>> aggregateFunctions)
Create a new
TABLE reference from this table, pivoting it
into another form
For more details, see Table.pivot(Field...) |
PivotForStep |
pivot(Field<?>... aggregateFunctions)
Create a new
TABLE reference from this table, pivoting it
into another form
This has been observed to work with
SQLDialect.ORACLE
SQLDialect.SQLSERVER (not yet officially supported)
Other dialects by using some means of simulation (not yet officially
supported)
|
TablePartitionByStep |
rightOuterJoin(String sql)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep |
rightOuterJoin(String sql,
Object... bindings)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep |
rightOuterJoin(String sql,
QueryPart... parts)
RIGHT OUTER JOIN a table to this table. |
TablePartitionByStep |
rightOuterJoin(TableLike<?> table)
RIGHT OUTER JOIN a table to this table. |
void |
toSQL(RenderContext context)
Render this
QueryPart to a SQL string contained in
context.sql(). |
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> |
with(String hint)
Specify a SQL Server style table hint for query optimisation
This makes sense only on an actual database table or view, not on other
composed table sources.
|
public TableImpl(String name)
public final void bind(BindContext context)
QueryPartInternalQueryPart to a PreparedStatement
This method is for JOOQ INTERNAL USE only. Do not reference directly
context - The context holding the next bind index and other information
for variable bindingpublic final void toSQL(RenderContext context)
QueryPartInternalQueryPart 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.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
public boolean declaresTables()
declaresTables in interface QueryPartInternalpublic boolean equals(Object that)
QueryPartQueryPart 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 Row fieldsRow()
TableLikeRowpublic final <T> Field<T> field(Field<T> field)
TableLikefield in interface TableLike<R extends Record>Row.field(Field)public final Field<?> field(String string)
TableLikefield in interface TableLike<R extends Record>Row.field(String)public final Field<?> field(int index)
TableLikefield in interface TableLike<R extends Record>Row.field(int)public final Field<?>[] fields()
TableLikefields in interface TableLike<R extends Record>Row.fields()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)
TableLikeasTable in interface TableLike<R extends Record>Table.as(String)public final Table<R> asTable(String alias, String... fieldAliases)
TableLikeasTable in interface TableLike<R extends Record>Table.as(String, String...)public final Schema getSchema()
Tablepublic final String getName()
Tablepublic Identity<R,? extends Number> 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 simulated 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 fieldpublic final Table<R> with(String hint)
TableThis 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 PivotForStep pivot(Field<?>... aggregateFunctions)
TableTABLE reference from this table, pivoting it
into another form
This has been observed to work with
SQLDialect.ORACLESQLDialect.SQLSERVER (not yet officially supported)public final PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions)
TableTABLE 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 DivideByOnStep divideBy(Table<?> divisor)
TableTABLE 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 TableOptionalOnStep join(TableLike<?> table, JoinType type)
TableJoinType
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 join(TableLike<?> table)
TableINNER JOIN a table to this table.public final TableOnStep join(String sql)
TableINNER 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!
join in interface Table<R extends Record>DSL.table(String)public final TableOnStep join(String sql, Object... bindings)
TableINNER 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!
join in interface Table<R extends Record>DSL.table(String, Object...)public final TableOnStep join(String sql, QueryPart... parts)
TableINNER 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!
join in interface Table<R extends Record>DSL.table(String, QueryPart...)public final TablePartitionByStep leftOuterJoin(TableLike<?> table)
TableLEFT OUTER JOIN a table to this table.leftOuterJoin in interface Table<R extends Record>public final TablePartitionByStep leftOuterJoin(String sql)
TableLEFT 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)public final TablePartitionByStep leftOuterJoin(String sql, Object... bindings)
TableLEFT 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...)public final TablePartitionByStep leftOuterJoin(String sql, QueryPart... parts)
TableLEFT 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...)public final TablePartitionByStep rightOuterJoin(TableLike<?> table)
TableRIGHT 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 rightOuterJoin(String sql)
TableRIGHT 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)public final TablePartitionByStep rightOuterJoin(String sql, Object... bindings)
TableRIGHT 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...)public final TablePartitionByStep rightOuterJoin(String sql, QueryPart... parts)
TableRIGHT 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...)public final TableOnStep fullOuterJoin(TableLike<?> table)
TableFULL 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 fullOuterJoin(String sql)
TableFULL 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)public final TableOnStep fullOuterJoin(String sql, Object... bindings)
TableFULL 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...)public final TableOnStep fullOuterJoin(String sql, QueryPart... parts)
TableFULL 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...)public final Table<Record> crossJoin(TableLike<?> table)
TableCROSS JOIN a table to this table.
If this syntax is unavailable, it is simulated 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(String sql)
TableCROSS JOIN a table to this table.
If this syntax is unavailable, it is simulated 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)public final Table<Record> crossJoin(String sql, Object... bindings)
TableCROSS JOIN a table to this table.
If this syntax is unavailable, it is simulated 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...)public final Table<Record> crossJoin(String sql, QueryPart... parts)
TableCROSS JOIN a table to this table.
If this syntax is unavailable, it is simulated 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...)public final Table<Record> naturalJoin(TableLike<?> table)
TableNATURAL JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.
naturalJoin in interface Table<R extends Record>public final Table<Record> naturalJoin(String sql)
TableNATURAL JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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)public final Table<Record> naturalJoin(String sql, Object... bindings)
TableNATURAL JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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...)public final Table<Record> naturalJoin(String sql, QueryPart... parts)
TableNATURAL JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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...)public final Table<Record> naturalLeftOuterJoin(TableLike<?> table)
TableNATURAL LEFT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.
naturalLeftOuterJoin in interface Table<R extends Record>public final Table<Record> naturalLeftOuterJoin(String sql)
TableNATURAL LEFT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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)public final Table<Record> naturalLeftOuterJoin(String sql, Object... bindings)
TableNATURAL LEFT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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...)public final Table<Record> naturalLeftOuterJoin(String sql, QueryPart... parts)
TableNATURAL LEFT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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...)public final Table<Record> naturalRightOuterJoin(TableLike<?> table)
TableNATURAL RIGHT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate this behaviour using the information provided in this query.
naturalRightOuterJoin in interface Table<R extends Record>public final Table<Record> naturalRightOuterJoin(String sql)
TableNATURAL RIGHT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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)public final Table<Record> naturalRightOuterJoin(String sql, Object... bindings)
TableNATURAL RIGHT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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...)public final Table<Record> naturalRightOuterJoin(String sql, QueryPart... parts)
TableNATURAL RIGHT OUTER JOIN a table to this table.
If this is not supported by your RDBMS, then jOOQ will try to simulate 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...)public int hashCode()
QueryPartQueryPart.
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.
public boolean declaresFields()
declaresFields in interface QueryPartInternalpublic String toString()
QueryPartQueryPart
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(RenderContext ctx)
protected final DSLContext create(BindContext ctx)
protected final DataAccessException translate(String sql, SQLException e)
Copyright © 2013. All Rights Reserved.