- All Superinterfaces:
Attachable
,Comparable<Record>
,Fields
,Formattable
,Serializable
- All Known Subinterfaces:
EmbeddableRecord<R>
,QualifiedRecord<R>
,Record1<T1>
,Record10<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10> Record11<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Record12<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Record13<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Record14<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Record15<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Record16<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Record17<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Record18<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Record19<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Record2<T1,
,T2> Record20<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Record21<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Record22<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Record3<T1,
,T2, T3> Record4<T1,
,T2, T3, T4> Record5<T1,
,T2, T3, T4, T5> Record6<T1,
,T2, T3, T4, T5, T6> Record7<T1,
,T2, T3, T4, T5, T6, T7> Record8<T1,
,T2, T3, T4, T5, T6, T7, T8> Record9<T1,
,T2, T3, T4, T5, T6, T7, T8, T9> TableRecord<R>
,UDTRecord<R>
,UpdatableRecord<R>
- All Known Implementing Classes:
CustomRecord
,DefaultBinding.SdoGeometryRecord
,DefaultBinding.SdoPointTypeRecord
,EmbeddableRecordImpl
,TableRecordImpl
,UDTRecordImpl
,UpdatableRecordImpl
A record essentially combines a list of columns (Field
) with a
corresponding list of values, each value being of the respective field's
type.
While records can be seen as generic column / value mappings, their concrete implementations often specialise the above description in any of the following ways:
Table records
Records originating from a concrete database table (or view) are modelled by
jOOQ as TableRecord
or UpdatableRecord
, if they contain a
primary key. If you're using jOOQ's code generator, you can generate even
more concrete types of table records, i.e. one table record per table.
UDT records
SQLDialect.ORACLE
and SQLDialect.POSTGRES
formally support
user defined types (UDT), which are modelled by jOOQ as UDTRecord
. In
addition to being regular records (column / value mappings), they also
implement the JDBC SQLData
API in order to be streamed to a JDBC
PreparedStatement
or from a JDBC ResultSet
Records of well-defined degree
When projecting custom record types in SQL, new ad-hoc types of a certain
degree are formed on the fly. Records with degree <= 22 are reflected by
jOOQ through the Record1
, Record2
, ... Record22
classes, which cover the respective row value expressions Row1
,
Row2
, ... Row22
Note that generated TableRecords
and UDTRecords
also implement a Record[N]
interface, if N <= 22
Record implements Comparable
jOOQ records have a natural ordering implemented in the same way as this is
defined in the SQL standard. For more details, see the
compareTo(Record)
method.
Importing Record
Starting from Java 14, the Record
type conflicts with
Record
, which is always imported by default. According to
Java Language Specification, this means that jOOQ's Record
type
can no longer be imported on demand. This is not sufficient:
import org.jooq.*;
You have to do this instead:
import org.jooq.*;
import org.jooq.Record;
- Author:
- Lukas Eder
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionboolean
changed()
Check if this record has been changed from its original as fetched from the database.void
changed
(boolean changed) Set all of this record's internal changed flags to the supplied value.boolean
changed
(int fieldIndex) Check if a field's value has been changed from its original as fetched from the database.void
changed
(int fieldIndex, boolean changed) Set this record's internal changed flag to the supplied value for a given field.boolean
Check if a field's value has been changed from its original as fetched from the database, usingFields.field(String)
for lookup.void
Set this record's internal changed flag to the supplied value for a given field, usingFields.field(String)
for lookup.boolean
Check if a field's value has been changed from its original as fetched from the database, usingFields.field(Field)
for lookup.void
Set this record's internal changed flag to the supplied value for a given field, usingFields.field(Field)
for lookup.boolean
Check if a field's value has been changed from its original as fetched from the database, usingFields.field(Name)
for lookup.void
Set this record's internal changed flag to the supplied value for a given field, usingFields.field(Name)
for lookup.int
Compares thisRecord
with anotherRecord
according to their natural ordering.boolean
Compare thisRecord
with anotherRecord
for equality.void
Load data into this record from a source.void
Load data into this record from a source, providing some field indexes.void
Load data into this record from a source, providing some field names, usingFields.field(String)
for lookup.void
Load data into this record from a source, providing some fields, usingFields.field(Field)
for lookup.void
Load data into this record from a source, providing some field names, usingFields.field(Name)
for lookup.void
Load data from an array into this record.void
Load data from an array into this record, providing some fields indexes.void
Load data from an array into this record, providing some fields names, usingFields.field(String)
for lookup.void
Load data from an array into this record, providing some fields, usingFields.field(Field)
for lookup.void
Load data from an array into this record, providing some fields names, usingFields.field(Name)
for lookup.void
Load data from a map into this record, usingFields.field(String)
for lookup.void
Load data from a map into this record, providing some field indexes.void
Load data from a map into this record, providing some field names, usingFields.field(String)
for lookup.void
Load data from a map into this record, providing some fields, usingFields.field(Field)
for lookup.void
Load data from a map into this record, providing some field names, usingFields.field(Name)
for lookup.@Nullable Object
get
(int index) Get a value from this record, providing a field index.<U> U
Get a converted value from this record, providing a field index.<U> U
Get a converted value from this record, providing a field index.@Nullable Object
Get a value from this Record, providing a field name, usingFields.field(String)
for lookup.<U> U
Get a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.<U> U
Get a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.<U> U
Get a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.<T> T
Get a value from this Record, providing a field, usingFields.field(Field)
for lookup.<T,
U> U Get a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.@Nullable Object
Get a value from this Record, providing a field name, usingFields.field(Name)
for lookup.<U> U
Get a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.<U> U
Get a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.getValue
(int index) Get a value from this record, providing a field index.<T> T
Get a converted value from this record, providing a field index.<U> U
Get a converted value from this record, providing a field index.Get a value from this Record, providing a field name, usingFields.field(String)
for lookup.<T> T
Get a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.<U> U
Get a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.<T> T
Get a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.<T> T
Get a value from this Record, providing a field, usingFields.field(Field)
for lookup.<T,
U> U Get a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.Get a value from this Record, providing a field name, usingFields.field(Name)
for lookup.<T> T
Get a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.<U> U
Get a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.int
hashCode()
Get a hash code of thisRecord
, based on the underlying row value expression.<E> E
into
(E object) Map resulting records onto a custom type.<E> E
Map resulting records onto a custom type.@NotNull Record
Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1> @NotNull Record1<T1>
Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2> @NotNull Record2<T1, T2> Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3> @NotNull Record3<T1, T2, T3> Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4>
@NotNull Record4<T1,T2, T3, T4> Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5>
@NotNull Record5<T1,T2, T3, T4, T5> Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6>
@NotNull Record6<T1,T2, T3, T4, T5, T6> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7>
@NotNull Record7<T1,T2, T3, T4, T5, T6, T7> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8>
@NotNull Record8<T1,T2, T3, T4, T5, T6, T7, T8> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9>
@NotNull Record9<T1,T2, T3, T4, T5, T6, T7, T8, T9> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10>
@NotNull Record10<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
@NotNull Record11<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
@NotNull Record12<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
@NotNull Record13<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
@NotNull Record14<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
@NotNull Record15<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
@NotNull Record16<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>
@NotNull Record17<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>
@NotNull Record18<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>
@NotNull Record19<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>
@NotNull Record20<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19, Field<T20> field20) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>
@NotNull Record21<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19, Field<T20> field20, Field<T21> field21) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<T1,
T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>
@NotNull Record22<T1,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> into
(Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19, Field<T20> field20, Field<T21> field21, Field<T22> field22) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.<R extends Record>
RMap resulting records onto a custom record type.@Nullable Object @NotNull []
Convert this record into an array.intoList()
Convert this record into a list.intoMap()
Return this record as a name/value map.@NotNull ResultSet
Generate an in-memory JDBCResultSet
containing the data of thisRecord
.Convert this record into a stream.<E> E
map
(RecordMapper<Record, E> mapper) Map this record into a custom mapper callback.@NotNull Record
original()
Get this record containing the original values as fetched from the database.@Nullable Object
original
(int fieldIndex) Get an original value from this record as fetched from the database.@Nullable Object
Get an original value from this record as fetched from the database, usingFields.field(String)
for lookup.<T> T
Get an original value from this record as fetched from the database, usingFields.field(Field)
for lookup.@Nullable Object
Get an original value from this record as fetched from the database, usingFields.field(Name)
for lookup.void
reset()
void
reset
(int fieldIndex) void
Reset a given value to itsoriginal(String)
value and itschanged(String)
flag tofalse
, usingFields.field(String)
for lookup.void
Reset a given value to itsoriginal(Field)
value and itschanged(Field)
flag tofalse
, usingFields.field(Field)
for lookup.void
Reset a given value to itsoriginal(Name)
value and itschanged(Name)
flag tofalse
, usingFields.field(Name)
for lookup.<T> void
Set a value into this record, usingFields.field(Field)
for lookup.<T,
U> void Set a value into this record, usingFields.field(Field)
for lookup.<T> void
Set a value into this record, usingFields.field(Field)
for lookup.<T,
U> void Set a value into this record, usingFields.field(Field)
for lookup.int
size()
Get the number of fields of this record.@NotNull Row
Get this record's values as aRow
.<T> @NotNull Record
Set a value into this record, usingFields.field(Field)
for lookup.<T,
U> @NotNull Record Set a value into this record, usingFields.field(Field)
for lookup.Methods inherited from interface org.jooq.Attachable
attach, configuration, detach
Methods inherited from interface org.jooq.Fields
dataType, dataType, dataType, dataTypes, field, field, field, field, field, field, field, field, field, field, fields, fields, fields, fields, fields, fieldsRow, fieldStream, indexOf, indexOf, indexOf, type, type, type, types
Methods inherited from interface org.jooq.Formattable
format, format, format, format, format, format, format, format, format, formatChart, formatChart, formatChart, formatChart, formatChart, formatChart, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatHTML, formatHTML, formatHTML, formatInsert, formatInsert, formatInsert, formatInsert, formatInsert, formatInsert, formatJSON, formatJSON, formatJSON, formatJSON, formatJSON, formatJSON, formatXML, formatXML, formatXML, formatXML, formatXML, formatXML, intoXML, intoXML, intoXML, intoXML
-
Method Details
-
valuesRow
Get this record's values as aRow
. -
get
Get a value from this Record, providing a field, usingFields.field(Field)
for lookup.If this record contains a field with the same
Field.getName()
as the argument field, that value is retrieved.- Type Parameters:
T
- The generic field parameter- Parameters:
field
- The field- Returns:
- The value of a field contained in this record
- Throws:
IllegalArgumentException
- If the argument field is not contained inFields.fieldsRow()
-
get
<U> U get(Field<?> field, Class<? extends U> type) throws IllegalArgumentException, DataTypeException Get a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.The
Converter
that is provided byConfiguration.converterProvider()
will be used to convert the value toU
If this record contains a field with the same
Field.getName()
as the argument field, that value is retrieved.- Type Parameters:
U
- The conversion type parameter- Parameters:
field
- The fieldtype
- The conversion type- Returns:
- The value of a field contained in this record
- Throws:
IllegalArgumentException
- If the argument field is not contained inFields.fieldsRow()
DataTypeException
- wrapping any data type conversion exception that might have occurred
-
get
<T,U> U get(Field<T> field, Converter<? super T, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.If this record contains a field with the same
Field.getName()
as the argument field, that value is retrieved.- Type Parameters:
T
- The database type parameterU
- The conversion type parameter- Parameters:
field
- The fieldconverter
- The data type converter- Returns:
- The value of a field contained in this record
- Throws:
IllegalArgumentException
- If the argument field is not contained inFields.fieldsRow()
DataTypeException
- wrapping any data type conversion exception that might have occurred
-
get
Get a value from this Record, providing a field name, usingFields.field(String)
for lookup.- Parameters:
fieldName
- The field's name- Returns:
- The value of a field's name contained in this record
- Throws:
IllegalArgumentException
- If the argument fieldName is not contained in the record
-
get
<U> U get(String fieldName, Class<? extends U> type) throws IllegalArgumentException, DataTypeException Get a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.The
Converter
that is provided byConfiguration.converterProvider()
will be used to convert the value toU
- Type Parameters:
U
- The conversion type parameter- Parameters:
fieldName
- The field's nametype
- The conversion type- Returns:
- The value of a field's name contained in this record
- Throws:
IllegalArgumentException
- If the argument fieldName is not contained in the recordDataTypeException
- wrapping any data type conversion exception that might have occurred
-
get
<U> U get(String fieldName, Converter<?, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.- Type Parameters:
U
- The conversion type parameter- Parameters:
fieldName
- The field's nameconverter
- The data type converter- Returns:
- The value of a field's name contained in this record
- Throws:
IllegalArgumentException
- If the argument fieldName is not contained in the recordDataTypeException
- wrapping any data type conversion exception that might have occurred
-
get
Get a value from this Record, providing a field name, usingFields.field(Name)
for lookup.- Parameters:
fieldName
- The field's name- Returns:
- The value of a field's name contained in this record
- Throws:
IllegalArgumentException
- If the argument fieldName is not contained in the record
-
get
<U> U get(Name fieldName, Class<? extends U> type) throws IllegalArgumentException, DataTypeException Get a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.The
Converter
that is provided byConfiguration.converterProvider()
will be used to convert the value toU
- Type Parameters:
U
- The conversion type parameter- Parameters:
fieldName
- The field's nametype
- The conversion type- Returns:
- The value of a field's name contained in this record
- Throws:
IllegalArgumentException
- If the argument fieldName is not contained in the recordDataTypeException
- wrapping any data type conversion exception that might have occurred
-
get
<U> U get(Name fieldName, Converter<?, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.- Type Parameters:
U
- The conversion type parameter- Parameters:
fieldName
- The field's nameconverter
- The data type converter- Returns:
- The value of a field's name contained in this record
- Throws:
IllegalArgumentException
- If the argument fieldName is not contained in the recordDataTypeException
- wrapping any data type conversion exception that might have occurred
-
get
Get a value from this record, providing a field index.- Parameters:
index
- The 0-based field index in this record.- Returns:
- The value of a field's index contained in this record
- Throws:
IllegalArgumentException
- If the argument index is not contained in the record
-
get
Get a converted value from this record, providing a field index.The
Converter
that is provided byConfiguration.converterProvider()
will be used to convert the value toU
- Type Parameters:
U
- The conversion type parameter- Parameters:
index
- The 0-based field index in this record.type
- The conversion type- Returns:
- The value of a field's index contained in this record
- Throws:
IllegalArgumentException
- If the argument index is not contained in the recordDataTypeException
- wrapping data type conversion exception that might have occurred
-
get
<U> U get(int index, Converter<?, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this record, providing a field index.- Type Parameters:
U
- The conversion type parameter- Parameters:
index
- The 0-based field index in this record.converter
- The data type converter- Returns:
- The value of a field's index contained in this record
- Throws:
IllegalArgumentException
- If the argument index is not contained in the recordDataTypeException
- wrapping data type conversion exception that might have occurred
-
set
Set a value into this record, usingFields.field(Field)
for lookup.This will always set the
changed(Field)
flag for the givenfield
, no matter if setting the value actually changes the value.Changing
Table.getPrimaryKey()
values will set allchanged()
flags to true, in order to produce completeINSERT
statements on subsequentUpdatableRecord.store()
operations.- Type Parameters:
T
- The generic field parameter- Parameters:
field
- The fieldvalue
- The value
-
set
Set a value into this record, usingFields.field(Field)
for lookup.This will always set the
changed(Field)
flag for the givenfield
, no matter if setting the value actually changes the value.Changing
Table.getPrimaryKey()
values will set allchanged()
flags to true, in order to produce completeINSERT
statements on subsequentUpdatableRecord.store()
operations.- Type Parameters:
T
- The generic field parameterU
- The conversion type parameter- Parameters:
field
- The fieldvalue
- The valueconverter
- The converter used to convertvalue
into an appropriate type
-
with
Set a value into this record, usingFields.field(Field)
for lookup.Like
set(Field, Object)
but returningthis
for fluent setting of multiple values. -
with
@NotNull <T,U> @NotNull Record with(Field<T> field, U value, Converter<? extends T, ? super U> converter) Set a value into this record, usingFields.field(Field)
for lookup.Like
set(Field, Object, Converter)
but returningthis
for fluent setting of multiple values. -
size
int size()Get the number of fields of this record. -
original
Get this record containing the original values as fetched from the database.Record values can be freely modified after having fetched a record from the database. Every record also references the originally fetched values. This method returns a new record containing those original values.
- See Also:
-
original
Get an original value from this record as fetched from the database, usingFields.field(Field)
for lookup.Record values can be freely modified after having fetched a record from the database. Every record also references the originally fetched values. This method returns such an original value for a field.
- See Also:
-
original
Get an original value from this record as fetched from the database.Record values can be freely modified after having fetched a record from the database. Every record also references the originally fetched values. This method returns such an original value for a field.
- Parameters:
fieldIndex
- The 0-based field index in this record.- See Also:
-
original
Get an original value from this record as fetched from the database, usingFields.field(String)
for lookup.Record values can be freely modified after having fetched a record from the database. Every record also references the originally fetched values. This method returns such an original value for a field.
- See Also:
-
original
Get an original value from this record as fetched from the database, usingFields.field(Name)
for lookup.Record values can be freely modified after having fetched a record from the database. Every record also references the originally fetched values. This method returns such an original value for a field.
- See Also:
-
changed
boolean changed()Check if this record has been changed from its original as fetched from the database.If this returns
false
, then it can be said thatrecord.equals(record.original())
is true.- See Also:
-
changed
Check if a field's value has been changed from its original as fetched from the database, usingFields.field(Field)
for lookup.- See Also:
-
changed
boolean changed(int fieldIndex) Check if a field's value has been changed from its original as fetched from the database.- Parameters:
fieldIndex
- The 0-based field index in this record.- See Also:
-
changed
Check if a field's value has been changed from its original as fetched from the database, usingFields.field(String)
for lookup.- See Also:
-
changed
Check if a field's value has been changed from its original as fetched from the database, usingFields.field(Name)
for lookup.- See Also:
-
changed
void changed(boolean changed) Set all of this record's internal changed flags to the supplied value.If the
changed
argument isfalse
, theoriginal()
values will be reset to the corresponding "current" values as well -
changed
Set this record's internal changed flag to the supplied value for a given field, usingFields.field(Field)
for lookup.If the
changed
argument isfalse
, theoriginal(Field)
value will be reset to the corresponding "current" value as well- See Also:
-
changed
void changed(int fieldIndex, boolean changed) Set this record's internal changed flag to the supplied value for a given field.If the
changed
argument isfalse
, theoriginal(int)
value will be reset to the corresponding "current" value as well- Parameters:
fieldIndex
- The 0-based field index in this record.- See Also:
-
changed
Set this record's internal changed flag to the supplied value for a given field, usingFields.field(String)
for lookup.If the
changed
argument isfalse
, theoriginal(String)
value will be reset to the corresponding "current" value as well- See Also:
-
changed
Set this record's internal changed flag to the supplied value for a given field, usingFields.field(Name)
for lookup.If the
changed
argument isfalse
, theoriginal(Name)
value will be reset to the corresponding "current" value as well- See Also:
-
reset
void reset() -
reset
Reset a given value to itsoriginal(Field)
value and itschanged(Field)
flag tofalse
, usingFields.field(Field)
for lookup. -
reset
void reset(int fieldIndex) - Parameters:
fieldIndex
- The 0-based field index in this record.
-
reset
Reset a given value to itsoriginal(String)
value and itschanged(String)
flag tofalse
, usingFields.field(String)
for lookup. -
reset
Reset a given value to itsoriginal(Name)
value and itschanged(Name)
flag tofalse
, usingFields.field(Name)
for lookup. -
intoArray
Convert this record into an array.The resulting array has the same number of elements as this record has fields. The resulting array contains data as such:
// For arbitrary values of i record.getValue(i) == record.intoArray()[i]
This is the same as calling
into(Object[].class)
- Returns:
- This record as an array
- See Also:
-
intoList
Convert this record into a list.The resulting list has the same number of elements as this record has fields. The resulting array contains data as such:
// For arbitrary values of i record.getValue(i) == record.intoList().get(i)
This is the same as calling
Arrays.asList(intoArray())
-
intoStream
Convert this record into a stream.The resulting stream has the same number of elements as this record has fields. The resulting stream contains data as such:
This is the same as calling
into(Stream.class)
- Returns:
- This record as a stream
-
intoMap
Return this record as a name/value map.This is the inverse operation to
fromMap(Map)
- Returns:
- This record as a map
- See Also:
-
into
Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Parameters:
fields
- The fields of the new record- Returns:
- The new record
-
into
Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record3<T1,T3> T2, intoT3> (Field<T1> field1, Field<T2> field2, Field<T3> field3) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record4<T1,T3, T4> T2, intoT3, T4> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record5<T1,T3, T4, T5> T2, intoT3, T4, T5> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record6<T1,T3, T4, T5, T6> T2, intoT3, T4, T5, T6> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record7<T1,T3, T4, T5, T6, T7> T2, intoT3, T4, T5, T6, T7> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record8<T1,T3, T4, T5, T6, T7, T8> T2, intoT3, T4, T5, T6, T7, T8> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record9<T1,T3, T4, T5, T6, T7, T8, T9> T2, intoT3, T4, T5, T6, T7, T8, T9> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record10<T1,T3, T4, T5, T6, T7, T8, T9, T10> T2, intoT3, T4, T5, T6, T7, T8, T9, T10> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record11<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record12<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record13<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record14<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record15<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record16<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record17<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record18<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record19<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record20<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19, Field<T20> field20) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record21<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19, Field<T20> field20, Field<T21> field21) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
@NotNull <T1,T2, @NotNull Record22<T1,T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> T2, intoT3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> (Field<T1> field1, Field<T2> field2, Field<T3> field3, Field<T4> field4, Field<T5> field5, Field<T6> field6, Field<T7> field7, Field<T8> field8, Field<T9> field9, Field<T10> field10, Field<T11> field11, Field<T12> field12, Field<T13> field13, Field<T14> field14, Field<T15> field15, Field<T16> field16, Field<T17> field17, Field<T18> field18, Field<T19> field19, Field<T20> field20, Field<T21> field21, Field<T22> field22) Copy this record into a new record holding only a subset of the previous fields, usingFields.field(Field)
for lookup.- Returns:
- The new record
- See Also:
-
into
Map resulting records onto a custom type.This will map this record onto your custom type using a
RecordMapper
as provided byConfiguration.recordMapperProvider()
. If no custom provider is specified, theDefaultRecordMapperProvider
is used.- Type Parameters:
E
- The generic entity type.- Parameters:
type
- The entity type.- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping records- See Also:
-
into
Map resulting records onto a custom type.This is the same as
into(Class)
, except that no new object is instantiated as a result. Instead, you can provide your own custom POJO instance.- Type Parameters:
E
- The generic entity type.- Parameters:
object
- The receiving bean.- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping recordsNullPointerException
- ifobject
isnull
- See Also:
-
into
Map resulting records onto a custom record type.The mapping algorithm is this:
jOOQ will map
Record
values by equal field names:- For every field in the
table
argument withField.getName()
"MY_field"
(case-sensitive!), a corresponding field with the same name in this record will be searched. - If several fields in this record share the same
Field.getName()
, then the first one returning true onField.equals(Object)
will be returned. (e.g. qualified field names match)
Other restrictions
RecordQualifier.getRecordType()
must return a class of typeTableRecord
, which must provide a default constructor. Non-public default constructors are made accessible usingConstructor.setAccessible(boolean)
- Type Parameters:
R
- The generic table record type.- Parameters:
table
- The table type.
- For every field in the
-
intoResultSet
Generate an in-memory JDBCResultSet
containing the data of thisRecord
.Use this as an adapter for JDBC-compliant code that expects a
ResultSet
to operate on, rather than a jOOQResult
. The returnedResultSet
allows for the following behaviour according to the JDBC specification:ResultSet.CLOSE_CURSORS_AT_COMMIT
: The cursors (i.e.Statement
object) are no longer availableResultSet.CONCUR_READ_ONLY
: You cannot update the database through thisResultSet
, as the underlyingResult
object does not hold any open database refences anymoreResultSet.FETCH_FORWARD
: The fetch direction is forward only, and cannot be changedResultSet.TYPE_SCROLL_INSENSITIVE
: You can use any of theResultSet
's scrolling methods, e.g.ResultSet.next()
orResultSet.previous()
, etc.
You may use
DSLContext.fetch(ResultSet)
to unwind this wrapper again.This is the same as creating a new
Result
with thisRecord
only, and then callingResult.intoResultSet()
on thatResult
- Returns:
- A wrapper JDBC
ResultSet
-
map
Map this record into a custom mapper callback.- Parameters:
mapper
- The mapper callback- Returns:
- The custom mapped record
-
from
Load data into this record from a source.The mapping algorithm is this:
If
source
is anarray
Loading of data is delegated to
fromArray(Object...)
If
source
is aMap
Loading of data is delegated to
fromMap(Map)
If
source
is anIterable
Loading of data is equivalent to loading
fromArray(Object...)
, transforming theIterable
to an array, first.If any JPA
Column
annotations are found on theClass
of the providedsource
, only those are used. Matching candidates are:- Public no-argument instance methods annotated with
Column
- Public no-argument instance methods starting with
getXXX
orisXXX
, if there exists a matching public single-argumentsetXXX()
instance method that is annotated withColumn
- Public instance member fields annotated with
Column
Column.name()
must matchField.getName()
. All other annotation attributes are ignored- Only the first match per field is used
- Matching methods have a higher priority than matching member fields
- Explicitly matching methods have a higher priority than implicitly matching methods (implicitly matching getter = setter is annotated)
- Static methods / member fields are ignored
If there are no JPA
Column
annotations, or jOOQ can't find thejakarta.persistence
API on the classpath, jOOQ will map members by naming convention:If
Field.getName()
isMY_field
(case-sensitive!), then this field's value will be fetched from the first of these:- Public no-argument instance method
MY_field()
- Public no-argument instance method
myField()
- Public no-argument instance method
getMY_field()
- Public no-argument instance method
getMyField()
- Public instance member field
MY_field
- Public instance member field
myField
Other restrictions
- primitive types are supported.
General notes
The resulting record will have its internal "changed" flags set to true for all values. This means that
UpdatableRecord.store()
will perform anINSERT
statement. If you wish to store the record using anUPDATE
statement, useDSLContext.executeUpdate(UpdatableRecord)
instead.This is the same as calling
record.from(source, record.fields())
- Parameters:
source
- The source object to copy data from- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping records- See Also:
- Public no-argument instance methods annotated with
-
from
Load data into this record from a source, providing some fields, usingFields.field(Field)
for lookup.This is the same as
from(Object)
, except that only fields contained in thefields
argument will be mapped.- Parameters:
source
- The source object to copy data fromfields
- The record's fields to use for mapping- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping records- See Also:
-
from
Load data into this record from a source, providing some field names, usingFields.field(String)
for lookup.This is the same as
from(Object)
, except that only fields contained in thefieldNames
argument will be mapped.- Parameters:
source
- The source object to copy data fromfieldNames
- The record's fields names to use for mapping- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping records- See Also:
-
from
Load data into this record from a source, providing some field names, usingFields.field(Name)
for lookup.This is the same as
from(Object)
, except that only fields contained in thefieldNames
argument will be mapped.- Parameters:
source
- The source object to copy data fromfieldNames
- The record's fields names to use for mapping- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping records- See Also:
-
from
Load data into this record from a source, providing some field indexes.This is the same as
from(Object)
, except that only fields contained in thefieldIndexes
argument will be mapped.- Parameters:
source
- The source object to copy data fromfieldIndexes
- The record's 0-based field indexes to use for mapping- Throws:
MappingException
- wrapping any reflection exception that might have occurred while mapping records- See Also:
-
fromMap
Load data from a map into this record, usingFields.field(String)
for lookup.The argument map is expected to hold field-name / value pairs where field-names correspond to actual field names as provided by
Fields.field(String)
. Missing fields will be left untouched. Excess fields will be ignored.This is the inverse operation to
intoMap()
. This is the same as callingrecord.fromMap(map, record.fields())
- See Also:
-
fromMap
Load data from a map into this record, providing some fields, usingFields.field(Field)
for lookup.The argument map is expected to hold field-name / value pairs where field-names correspond to actual field names as provided by
Fields.field(String)
. Missing fields will be left untouched. Excess fields will be ignored.This is the same as
fromMap(Map)
, except that only fields contained in thefields
argument will be mapped.- See Also:
-
fromMap
Load data from a map into this record, providing some field names, usingFields.field(String)
for lookup.The argument map is expected to hold field-name / value pairs where field-names correspond to actual field names as provided by
Fields.field(String)
. Missing fields will be left untouched. Excess fields will be ignored.This is the same as
fromMap(Map)
, except that only fields contained in thefieldNames
argument will be mapped.- See Also:
-
fromMap
Load data from a map into this record, providing some field names, usingFields.field(Name)
for lookup.The argument map is expected to hold field-name / value pairs where field-names correspond to actual field names as provided by
Fields.field(Name)
. Missing fields will be left untouched. Excess fields will be ignored.This is the same as
fromMap(Map)
, except that only fields contained in thefieldNames
argument will be mapped.- See Also:
-
fromMap
Load data from a map into this record, providing some field indexes.The argument map is expected to hold field-name / value pairs where field-names correspond to actual field names as provided by
Fields.field(String)
. Missing fields will be left untouched. Excess fields will be ignored.This is the same as
fromMap(Map)
, except that only fields contained in thefieldIndexes
argument will be mapped.- Parameters:
fieldIndexes
- The 0-based field indexes in this record.- See Also:
-
fromArray
Load data from an array into this record.The argument array is expected to hold values for this record's field indexes. Missing values will be left untouched. Excess values will be ignored.
This is the inverse operation to
intoArray()
- See Also:
-
fromArray
Load data from an array into this record, providing some fields, usingFields.field(Field)
for lookup.The argument array is expected to hold values for this record's field indexes. Missing values will be left untouched. Excess values will be ignored.
This is the same as
fromArray(Object...)
, except that only fields contained in thefields
argument will be mapped.- See Also:
-
fromArray
Load data from an array into this record, providing some fields names, usingFields.field(String)
for lookup.The argument array is expected to hold values for this record's field indexes. Missing values will be left untouched. Excess values will be ignored.
This is the same as
fromArray(Object...)
, except that only fields contained in thefieldNames
argument will be mapped.- See Also:
-
fromArray
Load data from an array into this record, providing some fields names, usingFields.field(Name)
for lookup.The argument array is expected to hold values for this record's field indexes. Missing values will be left untouched. Excess values will be ignored.
This is the same as
fromArray(Object...)
, except that only fields contained in thefieldNames
argument will be mapped.- See Also:
-
fromArray
Load data from an array into this record, providing some fields indexes.The argument array is expected to hold values for this record's field indexes. Missing values will be left untouched. Excess values will be ignored.
This is the same as
fromArray(Object...)
, except that only fields contained in thefieldIndexes
argument will be mapped.- Parameters:
fieldIndexes
- The 0-based field indexes in this record.- See Also:
-
hashCode
int hashCode()Get a hash code of thisRecord
, based on the underlying row value expression.In order to fulfill the general contract of
Object.hashCode()
andObject.equals(Object)
, aRecord
's hash code value depends on all hash code values of thisRecord
's underlying column values. -
equals
Compare thisRecord
with anotherRecord
for equality.Two records are considered equal if
- They have the same degree
- For every
i BETWEEN 0 AND degree, r1[i] = r2[i]
Note, that the above rules correspond to the SQL comparison predicate behaviour as illustrated in the following example:
-- A row value expression comparison predicate SELECT * FROM my_table WHERE (1, 'A') = (1, 'A')
Unlike SQL, jOOQ allows to compare also incompatible records, e.g. records
- ... whose degrees are not equal (results in
false
) - ... whose column types are not equal (results in
false
) - ... whose record types are not equal (irrelevant for the result)
It can be said that for all R1, R2, if
R1.equal(R2)
, thenR1.compareTo(R2) == 0
-
compareTo
Compares thisRecord
with anotherRecord
according to their natural ordering.jOOQ Records implement
Comparable
to allow for naturally ordering Records in a "SQL way", i.e. according to the following rules:Records being compared must have the same ROW type
Two Records are comparable if and only if they have the same
ROW
type, i.e. if theirfieldsRow()
methods return fields of the same type and degree.Comparison rules
Assume the following notations:
X[i]
meansX.getValue(i)
X = Y
meansX.compareTo(Y) == 0
X < Y
meansX.compareTo(Y) < 0
X[i] = Y[i]
means(X[i] == null && Y[i] == null) || X[i].compareTo(Y[i]) == 0
X[i] < Y[i]
meansY[i] == null || X[i].compareTo(Y[i]) < 0
. This corresponds to the SQLNULLS LAST
clause.
r1
andr2
,x = r1.compareTo(r2)
yields:x = -1
: if(r1[0] < r2[0]) OR (r1[0] = r2[0] AND r1[1] < r2[1]) OR ... OR (r1[0] = r2[0] AND ... AND r1[N-1] = r2[N-1] AND r1[N] < r2[N])
x = 0
: ifOR (r1[0] = r2[0] AND ... AND r1[N-1] = r2[N-1] AND r1[N] = r2[N])
x = 1
: if(r1[0] > r2[0]) OR (r1[0] = r2[0] AND r1[1] > r2[1]) OR ... OR (r1[0] = r2[0] AND ... AND r1[N-1] = r2[N-1] AND r1[N] > r2[N])
Note, that the above rules correspond to the SQL ordering behaviour as illustrated in the following examples:
-- A SQL ORDER BY clause, ordering all records by columns in their order SELECT a, b, c FROM my_table ORDER BY 1, 2, 3 -- A row value expression comparison predicate SELECT * FROM my_table WHERE (a, b, c) < (1, 2, 3)
See
Row1.lessThan(Row1)
,Row2.lessThan(Row2)
, ...,Row22.lessThan(Row22)
for more details about row value expression comparison predicatesAlternative sorting behaviour can be achieved through
Result.sortAsc(java.util.Comparator)
and similar methods.- Specified by:
compareTo
in interfaceComparable<Record>
- Throws:
NullPointerException
- If the argument record isnull
ClassCastException
- If the argument record is not comparable with this record according to the above rules.
-
getValue
Get a value from this Record, providing a field, usingFields.field(Field)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(Field)
instead.- Throws:
IllegalArgumentException
- See Also:
-
getValue
<T> T getValue(Field<?> field, Class<? extends T> type) throws IllegalArgumentException, DataTypeException Get a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.[#2211] Future versions of jOOQ might remove tthis method. It is recommended to use
get(Field, Class)
instead.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
<T,U> U getValue(Field<T> field, Converter<? super T, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this Record, providing a field, usingFields.field(Field)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(Field, Converter)
instead.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
Get a value from this Record, providing a field name, usingFields.field(String)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(String)
instead.- Throws:
IllegalArgumentException
- See Also:
-
getValue
<T> T getValue(String fieldName, Class<? extends T> type) throws IllegalArgumentException, DataTypeException Get a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(String, Class)
instead.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
<U> U getValue(String fieldName, Converter<?, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this Record, providing a field name, usingFields.field(String)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(String, Converter)
instead.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
Get a value from this Record, providing a field name, usingFields.field(Name)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(Name)
instead.- Throws:
IllegalArgumentException
- See Also:
-
getValue
<T> T getValue(Name fieldName, Class<? extends T> type) throws IllegalArgumentException, DataTypeException Get a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(Name, Class)
instead.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
<U> U getValue(Name fieldName, Converter<?, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this Record, providing a field name, usingFields.field(Name)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(Name, Converter)
instead.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
Get a value from this record, providing a field index.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(int)
instead.- Parameters:
index
- The 0-based field index in this record.- Throws:
IllegalArgumentException
- See Also:
-
getValue
<T> T getValue(int index, Class<? extends T> type) throws IllegalArgumentException, DataTypeException Get a converted value from this record, providing a field index.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(int, Class)
instead.- Parameters:
index
- The 0-based field index in this record.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
getValue
<U> U getValue(int index, Converter<?, ? extends U> converter) throws IllegalArgumentException, DataTypeExceptionGet a converted value from this record, providing a field index.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
get(int, Converter)
instead.- Parameters:
index
- The 0-based field index in this record.- Throws:
IllegalArgumentException
DataTypeException
- See Also:
-
setValue
Set a value into this record, usingFields.field(Field)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
set(Field, Object)
instead.- See Also:
-
setValue
Set a value into this record, usingFields.field(Field)
for lookup.[#2211] Future versions of jOOQ might remove this method. It is recommended to use
set(Field, Object, Converter)
instead.- See Also:
-