Module org.jooq
Package org.jooq

Interface StoreQuery<R extends Record>

Type Parameters:
R - The record type of the table being modified
All Superinterfaces:
Attachable, AttachableQueryPart, AutoCloseable, Flow.Publisher<Integer>, Publisher<Integer>, org.reactivestreams.Publisher<Integer>, Query, QueryPart, RowCountQuery, Serializable, Statement
All Known Subinterfaces:
InsertQuery<R>, UpdateQuery<R>

public interface StoreQuery<R extends Record> extends RowCountQuery
A query storing objects to the database. This is either an insert or an update query.

Instances of this type cannot be created directly, only of its subtypes.

Author:
Lukas Eder
  • Method Details

    • setRecord

      @Support void setRecord(R record)
      Add values to the store statement
      Parameters:
      record - The record holding values that are stored by the query
    • addValue

      @Support <T> void addValue(Field<T> field, T value)
      Add a value to the store statement
      Parameters:
      field - The field
      value - The value
    • addValue

      @Support <T> void addValue(Field<T> field, Field<T> value)
      Add a value to the store statement
      Parameters:
      field - The field
      value - The value. If value is null, this results in calling addValue(Field, Object) with null as a value.
    • addValues

      @Support void addValues(Map<?,​?> map)
      Add multiple values to the store statement.

      Keys can either be of type String, Name, or Field.

      Values can either be of type <T> or Field<T>. jOOQ will attempt to convert values to their corresponding field's type.

    • setReturning

      @Support void setReturning()
      Configure the INSERT or UPDATE statement to return all fields in R.
      See Also:
      getReturnedRecords()
    • setReturning

      @Support void setReturning(Identity<R,​?> identity)
      Configure the INSERT or UPDATE statement to return the generated identity value.
      Parameters:
      identity - The table's identity
      See Also:
      getReturnedRecords()
    • setReturning

      @Support void setReturning(SelectFieldOrAsterisk... fields)
      Configure the INSERT or UPDATE statement to return a list of fields in R.
      Parameters:
      fields - Fields to be returned
      See Also:
      getReturnedRecords()
    • setReturning

      @Support void setReturning(Collection<? extends SelectFieldOrAsterisk> fields)
      Configure the INSERT or UPDATE statement to return a list of fields in R.
      Parameters:
      fields - Fields to be returned
      See Also:
      getReturnedRecords()
    • getReturnedRecord

      @Nullable @Support R getReturnedRecord()
      The record holding returned values as specified by any of the setReturning() methods.

      If the insert statement returns several records, this is the same as calling getReturnedRecords().get(0)

      This implemented differently for every dialect:

      • Firebird and Postgres have native support for INSERT .. RETURNING and UPDATE .. RETURNING clauses
      • HSQLDB, Oracle, and DB2 JDBC drivers allow for retrieving any table column as "generated key" in one statement
      • Derby, H2, Ingres, MySQL, SQL Server only allow for retrieving IDENTITY column values as "generated key". If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
      • Sybase and SQLite allow for retrieving IDENTITY values as @@identity or last_inserted_rowid() values. Those values are fetched in a separate SELECT statement. If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
      Returns:
      The returned value as specified by any of the setReturning() methods. This may return null in case jOOQ could not retrieve any generated keys from the JDBC driver.
      See Also:
      getReturnedRecords()
    • getReturnedRecords

      @NotNull @Support @NotNull Result<R> getReturnedRecords()
      The records holding returned values as specified by any of the setReturning() methods.

      This implemented differently for every dialect:

      • Firebird and Postgres have native support for INSERT .. RETURNING and UPDATE .. RETURNING clauses
      • HSQLDB, Oracle, and DB2 JDBC drivers allow for retrieving any table column as "generated key" in one statement
      • Derby, H2, Ingres, MySQL, SQL Server only allow for retrieving IDENTITY column values as "generated key". If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
      • Sybase and SQLite allow for retrieving IDENTITY values as @@identity or last_inserted_rowid() values. Those values are fetched in a separate SELECT statement. If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.

      [#5070] Due to an early API design flaw, this method historically returns the type R, not a more generic type Record. This means that only actual columns in R can be returned. For a more generic set of column expressions, use getResult() instead.

      Returns:
      The returned values as specified by any of the setReturning() methods. Note:
      • Not all databases / JDBC drivers support returning several values on multi-row inserts!
      • This may return an empty Result in case jOOQ could not retrieve any generated keys from the JDBC driver.
    • getResult

      @NotNull @Support @NotNull Result<?> getResult()
      The records holding returned values as specified by any of the setReturning() methods.

      This implemented differently for every dialect:

      • Firebird and Postgres have native support for INSERT .. RETURNING and UPDATE .. RETURNING clauses
      • HSQLDB, Oracle, and DB2 JDBC drivers allow for retrieving any table column as "generated key" in one statement
      • Derby, H2, Ingres, MySQL, SQL Server only allow for retrieving IDENTITY column values as "generated key". If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
      • Sybase and SQLite allow for retrieving IDENTITY values as @@identity or last_inserted_rowid() values. Those values are fetched in a separate SELECT statement. If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
      Returns:
      The returned values as specified by any of the setReturning() methods. Note:
      • Not all databases / JDBC drivers support returning several values on multi-row inserts!
      • This may return an empty Result in case jOOQ could not retrieve any generated keys from the JDBC driver.