/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Other licenses:
 * -----------------------------------------------------------------------------
 * Commercial licenses for this work are available. These replace the above
 * ASL 2.0 and offer limited warranties, support, maintenance, and commercial
 * database integrations.
 *
 * For more information, please visit: http://www.jooq.org/licenses
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
package org.jooq;

import java.util.stream.Stream;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

UDT definition.

Instances of this type cannot be created directly. They are available from generated code.

Author:Lukas Eder
Type parameters:
  • <R> – The record type
/** * UDT definition. * <p> * Instances of this type cannot be created directly. They are available from * generated code. * * @param <R> The record type * @author Lukas Eder */
public interface UDT<R extends UDTRecord<R>> extends Qualified {
Get this UDT's fields as a Row.
/** * Get this UDT's fields as a {@link Row}. */
@NotNull Row fieldsRow();
Get this table's fields as a Stream.
/** * Get this table's fields as a {@link Stream}. */
@NotNull Stream<Field<?>> fieldStream();
Get a specific field from this UDT.

This will return:

  • A field that is the same as the argument field (by identity comparison).
  • A field that is equal to the argument field (exact matching fully qualified name).
  • A field that is equal to the argument field (partially matching qualified name).
  • A field whose name is equal to the name of the argument field.
  • null otherwise.
If several fields have the same name, the first one is returned and a warning is logged.
See Also:
  • field.field(Field)
/** * Get a specific field from this UDT. * <p> * This will return: * <ul> * <li>A field that is the same as the argument field (by identity * comparison).</li> * <li>A field that is equal to the argument field (exact matching fully * qualified name).</li> * <li>A field that is equal to the argument field (partially matching * qualified name).</li> * <li>A field whose name is equal to the name of the argument field.</li> * <li><code>null</code> otherwise. * </ul> * If several fields have the same name, the first one is returned and a * warning is logged. * * @see Row#field(Field) */
@Nullable <T> Field<T> field(Field<T> field);
Get a specific field from this UDT.
See Also:
  • field.field(String)
/** * Get a specific field from this UDT. * * @see Row#field(String) */
@Nullable Field<?> field(String name);
Get a specific field from this UDT.
See Also:
  • field.field(Name)
/** * Get a specific field from this UDT. * * @see Row#field(Name) */
@Nullable Field<?> field(Name name);
Get a specific field from this UDT.
See Also:
  • field.field(int)
/** * Get a specific field from this UDT. * * @see Row#field(int) */
@Nullable Field<?> field(int index);
Get all fields from this UDT.
See Also:
  • fields.fields()
/** * Get all fields from this UDT. * * @see Row#fields() */
@Nullable Field<?>[] fields();
Get all fields from this UDT, providing some fields.
See Also:
Returns:All available fields
/** * Get all fields from this UDT, providing some fields. * * @return All available fields * @see Row#fields(Field...) */
@Nullable Field<?>[] fields(Field<?>... fields);
Get all fields from this UDT, providing some field names.
See Also:
Returns:All available fields
/** * Get all fields from this UDT, providing some field names. * * @return All available fields * @see Row#fields(String...) */
@Nullable Field<?>[] fields(String... fieldNames);
Get all fields from this UDT, providing some field names.
See Also:
Returns:All available fields
/** * Get all fields from this UDT, providing some field names. * * @return All available fields * @see Row#fields(Name...) */
@Nullable Field<?>[] fields(Name... fieldNames);
Get all fields from this UDT, providing some field indexes.
See Also:
Returns:All available fields
/** * Get all fields from this UDT, providing some field indexes. * * @return All available fields * @see Row#fields(int...) */
@Nullable Field<?>[] fields(int... fieldIndexes);
Get a field's index from this udt.
Params:
  • field – The field to look for
Returns:The field's index or -1 if the field is not contained in this udt.
/** * Get a field's index from this udt. * * @param field The field to look for * @return The field's index or <code>-1</code> if the field is not * contained in this udt. */
int indexOf(Field<?> field);
Get a field's index from this udt.
Params:
  • fieldName – The field name to look for
Returns:The field's index or -1 if the field is not contained in this udt.
/** * Get a field's index from this udt. * * @param fieldName The field name to look for * @return The field's index or <code>-1</code> if the field is not * contained in this udt. */
int indexOf(String fieldName);
Get a field's index from this udt.
Params:
  • fieldName – The field name to look for
Returns:The field's index or -1 if the field is not contained in this udt
/** * Get a field's index from this udt. * * @param fieldName The field name to look for * @return The field's index or <code>-1</code> if the field is not * contained in this udt */
int indexOf(Name fieldName);
Get the UDT package.
/** * Get the UDT package. */
@Nullable Package getPackage();
Returns:The record type produced by this table.
/** * @return The record type produced by this table. */
@NotNull Class<R> getRecordType();
Create a new Record of this UDT's type.
See Also:
/** * Create a new {@link Record} of this UDT's type. * * @see DSLContext#newRecord(UDT) */
@NotNull R newRecord();
The UDT's data type as known to the database.
/** * The UDT's data type as known to the database. */
@NotNull DataType<R> getDataType();
Whether this data type can be used from SQL statements.
/** * Whether this data type can be used from SQL statements. */
boolean isSQLUsable();
Whether this data type is a synthetic, structural UDT type.

This is true for example:

  • For Oracle TAB%ROWTYPE references, which are synthetic PL/SQL RECORD types in PL/SQL.
/** * Whether this data type is a synthetic, structural UDT type. * <p> * This is <code>true</code> for example: * <ul> * <li>For Oracle <code>TAB%ROWTYPE</code> references, which are synthetic * PL/SQL RECORD types in PL/SQL.</li> * </ul> */
boolean isSynthetic(); }