Module org.jooq
Package org.jooq

Interface Row

All Superinterfaces:
FieldOrRow, Fields, QueryPart, Serializable
All Known Subinterfaces:
Row1<T1>, Row10<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10>, Row11<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11>, Row12<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12>, Row13<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13>, Row14<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14>, Row15<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15>, Row16<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16>, Row17<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17>, Row18<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18>, Row19<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19>, Row2<T1,​T2>, Row20<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19,​T20>, Row21<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19,​T20,​T21>, Row22<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9,​T10,​T11,​T12,​T13,​T14,​T15,​T16,​T17,​T18,​T19,​T20,​T21,​T22>, Row3<T1,​T2,​T3>, Row4<T1,​T2,​T3,​T4>, Row5<T1,​T2,​T3,​T4,​T5>, Row6<T1,​T2,​T3,​T4,​T5,​T6>, Row7<T1,​T2,​T3,​T4,​T5,​T6,​T7>, Row8<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8>, Row9<T1,​T2,​T3,​T4,​T5,​T6,​T7,​T8,​T9>, RowN

public interface Row extends Fields, FieldOrRow
A row value expression.

Row value expressions are mainly useful for use in predicates, when comparing several values in one go, which can be more elegant than expanding the row value expression predicate in other equivalent syntaxes. This is especially true for non-equality predicates. For instance, the following two predicates are equivalent in SQL:

 (A, B) > (X, Y)
 (A > X) OR (A = X AND B > Y)
 

Example:

 // Assuming import static org.jooq.impl.DSL.*;

 using(configuration)
    .select()
    .from(CUSTOMER)
    .where(row(CUSTOMER.FIRST_NAME, CUSTOMER.LAST_NAME).in(
        select(ACTOR.FIRST_NAME, ACTOR.LAST_NAME).from(ACTOR)
    ))
    .fetch();
 

Note: Not all databases support row value expressions, but many row value expression operations can be emulated on all databases. See relevant row value expression method Javadocs for details.

Instances can be created using DSL.row(Object...) and overloads.

Author:
Lukas Eder
  • Method Details

    • size

      int size()
      Get the degree of this row value expression.
    • isNull

      @NotNull @Support @NotNull Condition isNull()
      Check if this row value expression contains only NULL values.

      Row NULL predicates can be emulated in those databases that do not support such predicates natively: (A, B) IS NULL is equivalent to A IS NULL AND B IS NULL

    • isNotNull

      @NotNull @Support @NotNull Condition isNotNull()
      Check if this row value expression contains no NULL values.

      Row NOT NULL predicates can be emulated in those databases that do not support such predicates natively: (A, B) IS NOT NULL is equivalent to A IS NOT NULL AND B IS NOT NULL

      Note that the two following predicates are NOT equivalent:

      • (A, B) IS NOT NULL, which is the same as (A IS NOT NULL) AND (B IS NOT NULL)
      • NOT((A, B) IS NULL), which is the same as (A IS NOT NULL) OR (B IS NOT NULL)