public interface Record extends Attachable, Comparable<Record>
 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:
 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.
 
 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
 
 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
 
 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
Result| Modifier and Type | Method and Description | 
|---|---|
| boolean | 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(Field<?> field)Check if a field's value has been changed from its original as fetched
 from the database. | 
| void | changed(Field<?> field,
       boolean changed)Set this record's internal changed flag to the supplied value for a given
 field. | 
| 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 | changed(String fieldName)Check if a field's value has been changed from its original as fetched
 from the database. | 
| void | changed(String fieldName,
       boolean changed)Set this record's internal changed flag to the supplied value for a given
 field. | 
| int | compareTo(Record record)Compares this  Recordwith anotherRecordaccording to their natural ordering. | 
| boolean | equals(Object other)Compare this  Recordwith anotherRecordfor
 equality. | 
| <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 name)Get a specific field from this Record. | 
| Field<?>[] | fields()Get all fields from this Record. | 
| Field<?>[] | fields(Field<?>... fields)Get all fields from this Record, providing some fields. | 
| Field<?>[] | fields(int... fieldIndexes)Get all fields from this Record, providing some field indexes. | 
| Field<?>[] | fields(String... fieldNames)Get all fields from this Record, providing some field names. | 
| Row | fieldsRow()Get this record's fields as a  Row. | 
| void | from(Object source)Load data into this record from a source. | 
| void | from(Object source,
    Field<?>... fields)Load data into this record from a source, providing some fields. | 
| void | from(Object source,
    int... fieldIndexes)Load data into this record from a source, providing some field indexes. | 
| void | from(Object source,
    String... fieldNames)Load data into this record from a source, providing some field names. | 
| void | fromArray(Object... array)Load data from an array into this record. | 
| void | fromArray(Object[] array,
         Field<?>... fields)Load data from an array into this record, providing some fields. | 
| void | fromArray(Object[] array,
         int... fieldIndexes)Load data from an array into this record, providing some fields indexes. | 
| void | fromArray(Object[] array,
         String... fieldNames)Load data from an array into this record, providing some fields names. | 
| void | fromMap(Map<String,?> map)Load data from a map into this record. | 
| void | fromMap(Map<String,?> map,
       Field<?>... fields)Load data from a map into this record, providing some fields. | 
| void | fromMap(Map<String,?> map,
       int... fieldIndexes)Load data from a map into this record, providing some field indexes. | 
| void | fromMap(Map<String,?> map,
       String... fieldNames)Load data from a map into this record, providing some field names. | 
| <T> T | getValue(Field<?> field,
        Class<? extends T> type)Get a converted value from this Record, providing a field. | 
| <T> T | getValue(Field<?> field,
        Class<? extends T> type,
        T defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| <T> T | getValue(Field<T> field)Get a value from this Record, providing a field. | 
| <T,U> U | getValue(Field<T> field,
        Converter<? super T,U> converter)Get a converted value from this Record, providing a field. | 
| <T,U> U | getValue(Field<T> field,
        Converter<? super T,U> converter,
        U defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| <T> T | getValue(Field<T> field,
        T defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| Object | getValue(int index)Get a value from this record, providing a field index. | 
| <T> T | getValue(int index,
        Class<? extends T> type)Get a converted value from this record, providing a field index. | 
| <T> T | getValue(int index,
        Class<? extends T> type,
        T defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| <U> U | getValue(int index,
        Converter<?,U> converter)Get a converted value from this record, providing a field index. | 
| <U> U | getValue(int index,
        Converter<?,U> converter,
        U defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| Object | getValue(int index,
        Object defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| Object | getValue(String fieldName)Get a value from this Record, providing a field name. | 
| <T> T | getValue(String fieldName,
        Class<? extends T> type)Get a converted value from this Record, providing a field name. | 
| <T> T | getValue(String fieldName,
        Class<? extends T> type,
        T defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| <U> U | getValue(String fieldName,
        Converter<?,U> converter)Get a converted value from this Record, providing a field name. | 
| <U> U | getValue(String fieldName,
        Converter<?,U> converter,
        U defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| Object | getValue(String fieldName,
        Object defaultValue)Deprecated. 
 - 3.3.0 - [#2878] - This method will be removed in jOOQ 4.0 | 
| int | hashCode()Get a hash code of this  Record, based on the underlying row
 value expression. | 
| <E> E | into(Class<? extends E> type)Map resulting records onto a custom type. | 
| <E> E | into(E object)Map resulting records onto a custom type. | 
| <R extends Record> | into(Table<R> table)Map resulting records onto a custom record type. | 
| Object[] | intoArray()Convert this record into an array. | 
| Map<String,Object> | intoMap()Return this record as a name/value map. | 
| ResultSet | intoResultSet()Generate an in-memory JDBC  ResultSetcontaining the data of thisRecord. | 
| <E> E | map(RecordMapper<Record,E> mapper)Map this record into a custom mapper callback. | 
| Record | original()Get this record containing the original values as fetched from the
 database. | 
| <T> T | original(Field<T> field)Get an original value from this record as fetched from the database. | 
| Object | original(int fieldIndex)Get an original value from this record as fetched from the database. | 
| Object | original(String fieldName)Get an original value from this record as fetched from the database. | 
| void | reset() | 
| void | reset(Field<?> field) | 
| void | reset(int fieldIndex) | 
| void | reset(String fieldName) | 
| <T> void | setValue(Field<T> field,
        T value)Set a value into this record. | 
| <T,U> void | setValue(Field<T> field,
        U value,
        Converter<T,? super U> converter)Set a value into this record. | 
| int | size()Get the number of fields of this record. | 
| Row | valuesRow()Get this record's values as a  Row. | 
attach, detach<T> Field<T> field(Field<T> field)
Row.field(Field)Field<?> field(String name)
Row.field(String)Field<?> field(int index)
Row.field(int)Field<?>[] fields()
Row.fields()Field<?>[] fields(Field<?>... fields)
Row.fields(Field...)Field<?>[] fields(String... fieldNames)
Row.fields(String...)Field<?>[] fields(int... fieldIndexes)
Row.fields(int...)<T> T getValue(Field<T> field) throws IllegalArgumentException
T - The generic field parameterfield - The fieldIllegalArgumentException - If the argument field is not contained
             in fieldsRow()@Deprecated <T> T getValue(Field<T> field, T defaultValue) throws IllegalArgumentException
T - The generic field parameterfield - The fielddefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument field is not contained
             in fieldsRow()<T> T getValue(Field<?> field, Class<? extends T> type) throws IllegalArgumentException, DataTypeException
T - The conversion type parameterfield - The fieldtype - The conversion typeIllegalArgumentException - If the argument field is not contained
             in fieldsRow()DataTypeException - wrapping any data type conversion exception
             that might have occurredDataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Class)@Deprecated <T> T getValue(Field<?> field, Class<? extends T> type, T defaultValue) throws IllegalArgumentException, DataTypeException
T - The conversion type parameterfield - The fieldtype - The conversion typedefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument field is not contained
             in fieldsRow()DataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Class)<T,U> U getValue(Field<T> field, Converter<? super T,U> converter) throws IllegalArgumentException, DataTypeException
T - The database type parameterU - The conversion type parameterfield - The fieldconverter - The data type converterIllegalArgumentException - If the argument field is not contained
             in fieldsRow()DataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Converter)@Deprecated <T,U> U getValue(Field<T> field, Converter<? super T,U> converter, U defaultValue) throws IllegalArgumentException, DataTypeException
T - The database type parameterU - The conversion type parameterfield - The fieldconverter - The data type converterdefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument field is not contained
             in fieldsRow()DataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Converter)Object getValue(String fieldName) throws IllegalArgumentException
fieldName - The field's nameIllegalArgumentException - If the argument fieldName is not
             contained in the record@Deprecated Object getValue(String fieldName, Object defaultValue) throws IllegalArgumentException
fieldName - The field's namedefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument fieldName is not
             contained in the record<T> T getValue(String fieldName, Class<? extends T> type) throws IllegalArgumentException, DataTypeException
T - The conversion type parameterfieldName - The field's nametype - The conversion typeIllegalArgumentException - If the argument fieldName is not
             contained in the recordDataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Class)@Deprecated <T> T getValue(String fieldName, Class<? extends T> type, T defaultValue) throws IllegalArgumentException, DataTypeException
T - The conversion type parameterfieldName - The field's nametype - The conversion typedefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument fieldName is not
             contained in the recordDataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Class)<U> U getValue(String fieldName, Converter<?,U> converter) throws IllegalArgumentException, DataTypeException
U - The conversion type parameterfieldName - The field's nameconverter - The data type converterIllegalArgumentException - If the argument fieldName is not
             contained in the recordDataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Converter)@Deprecated <U> U getValue(String fieldName, Converter<?,U> converter, U defaultValue) throws IllegalArgumentException, DataTypeException
U - The conversion type parameterfieldName - The field's nameconverter - The data type converterdefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument fieldName is not
             contained in the recordDataTypeException - wrapping any data type conversion exception
             that might have occurredConvert.convert(Object, Converter)Object getValue(int index) throws IllegalArgumentException
index - The field's indexIllegalArgumentException - If the argument index is not contained
             in the record@Deprecated Object getValue(int index, Object defaultValue) throws IllegalArgumentException
index - The field's indexdefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument index is not contained
             in the record<T> T getValue(int index,
               Class<? extends T> type)
        throws IllegalArgumentException,
               DataTypeException
T - The conversion type parameterindex - The field's indextype - The conversion typeIllegalArgumentException - If the argument index is not contained
             in the recordDataTypeException - wrapping data type conversion exception that
             might have occurredConvert.convert(Object, Class)@Deprecated <T> T getValue(int index, Class<? extends T> type, T defaultValue) throws IllegalArgumentException, DataTypeException
T - The conversion type parameterindex - The field's indextype - The conversion typedefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument index is not contained
             in the recordDataTypeException - wrapping data type conversion exception that
             might have occurredConvert.convert(Object, Class)<U> U getValue(int index,
               Converter<?,U> converter)
        throws IllegalArgumentException,
               DataTypeException
U - The conversion type parameterindex - The field's indexconverter - The data type converterIllegalArgumentException - If the argument index is not contained
             in the recordDataTypeException - wrapping data type conversion exception that
             might have occurredConvert.convert(Object, Converter)@Deprecated <U> U getValue(int index, Converter<?,U> converter, U defaultValue) throws IllegalArgumentException, DataTypeException
U - The conversion type parameterindex - The field's indexconverter - The data type converterdefaultValue - The default value instead of nullnullIllegalArgumentException - If the argument index is not contained
             in the recordDataTypeException - wrapping data type conversion exception that
             might have occurredConvert.convert(Object, Converter)<T> void setValue(Field<T> field, T value)
 This will always set the changed(Field) flag for the given
 field, no matter if setting the value actually changes the
 value.
 
 Changing Table.getPrimaryKey() values will set all
 changed() flags to true, in order to produce complete
 INSERT statements on subsequent
 UpdatableRecord.store() operations.
T - The generic field parameterfield - The fieldvalue - The value<T,U> void setValue(Field<T> field, U value, Converter<T,? super U> converter)
 This will always set the changed(Field) flag for the given
 field, no matter if setting the value actually changes the
 value.
 
 Changing Table.getPrimaryKey() values will set all
 changed() flags to true, in order to produce complete
 INSERT statements on subsequent
 UpdatableRecord.store() operations.
T - The generic field parameterU - The conversion type parameterfield - The fieldvalue - The valueconverter - The converter used to convert value into an
            appropriate typeint size()
Record original()
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.
original(Field), 
original(int), 
original(String)<T> T original(Field<T> field)
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.
original()Object original(int fieldIndex)
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.
original()Object original(String fieldName)
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.
original()boolean changed()
 If this returns false, then it can be said that
 record.equals(record.original()) is true.
original(), 
changed(Field), 
changed(int), 
changed(String)boolean changed(Field<?> field)
changed(), 
original(Field)boolean changed(int fieldIndex)
changed(), 
original(int)boolean changed(String fieldName)
changed(), 
original(String)void changed(boolean changed)
 If the changed argument is false, the
 original() values will be reset to the corresponding "current"
 values as well
void changed(Field<?> field, boolean changed)
 If the changed argument is false, the
 original(Field) value will be reset to the corresponding
 "current" value as well
changed(), 
changed(Field)void changed(int fieldIndex,
             boolean changed)
 If the changed argument is false, the
 original(int) value will be reset to the corresponding "current"
 value as well
changed(), 
changed(int)void changed(String fieldName, boolean changed)
 If the changed argument is false, the
 original(String) value will be reset to the corresponding
 "current" value as well
changed(), 
changed(String)void reset()
void reset(Field<?> field)
void reset(int fieldIndex)
void reset(String fieldName)
Object[] intoArray()
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)
fromArray(Object...)Map<String,Object> intoMap()
 This is the inverse operation to fromMap(Map)
fromMap(Map)<E> E into(Class<? extends E> type) throws MappingException
 This will map this record onto your custom type using a
 RecordMapper as provided by
 Configuration.recordMapperProvider(). If no custom provider is
 specified, the DefaultRecordMapperProvider is used.
E - The generic entity type.type - The entity type.MappingException - wrapping any reflection exception that might
             have occurred while mapping recordsfrom(Object), 
DefaultRecordMapper<E> E into(E object)
    throws MappingException
 This is the same as into(Class), except that no new object is
 instanciated as a result. Instead, you can provide your own custom POJO
 instance.
E - The generic entity type.object - The receiving bean.MappingException - wrapping any reflection exception that might
             have occurred while mapping recordsNullPointerException - if object is nullfrom(Object)<R extends Record> R into(Table<R> table)
The mapping algorithm is this:
Record values by equal field names:
table argument with
 Field.getName() "MY_field" (case-sensitive!), a
 corresponding field with the same name in this record will be searched.Field.getName(), then the first one returning true on
 Field.equals(Object) will be returned. (e.g. qualified field
 names match)
Table.getRecordType() must return a class of type
 TableRecord, which must provide a default constructor. Non-public
 default constructors are made accessible using
 AccessibleObject.setAccessible(boolean)R - The generic table record type.table - The table type.ResultSet intoResultSet()
ResultSet containing the data of this
 Record.
 
 Use this as an adapter for JDBC-compliant code that expects a
 ResultSet to operate on, rather than a jOOQ Result. The
 returned ResultSet 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 this ResultSet, as the underlying Result
 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 the
 ResultSet's scrolling methods, e.g. ResultSet.next()
 or ResultSet.previous(), etc.
 You may use DSLContext.fetch(ResultSet) to unwind this wrapper
 again.
 
 This is the same as creating a new Result with this
 Record only, and then calling Result.intoResultSet()
 on that Result
ResultSet<E> E map(RecordMapper<Record,E> mapper)
mapper - The mapper callbackvoid from(Object source) throws MappingException
The mapping algorithm is this:
source is an array
 Loading of data is delegated to fromArray(Object...)
 
source is a Map
 Loading of data is delegated to fromMap(Map)
 
Column annotations are found on the Class
 of the provided source, only those are used. Matching
 candidates are:
ColumngetXXX
 or isXXX, if there exists a matching public single-argument
 setXXX() instance method that is annotated with
 ColumnColumnColumn.name() must match Field.getName(). All other
 annotation attributes are ignored
Column annotations, or jOOQ can't
 find the javax.persistence API on the classpath, jOOQ will
 map members by naming convention:
 If Field.getName() is MY_field (case-sensitive!),
 then this field's value will be fetched from the first of these:
 
MY_field()myField()getMY_field()getMyField()MY_fieldmyField
 The resulting record will have its internal "changed" flags set to true
 for all values. This means that UpdatableRecord.store() will
 perform an INSERT statement. If you wish to store the record
 using an UPDATE statement, use
 DSLContext.executeUpdate(UpdatableRecord) instead.
 
 This is the same as calling
 record.from(source, record.fields())
source - The source object to copy data fromMappingException - wrapping any reflection exception that might
             have occurred while mapping recordsinto(Class), 
from(Object, Field...)void from(Object source, Field<?>... fields) throws MappingException
 This is the same as from(Object), except that only fields
 contained in the fields argument will be mapped.
source - The source object to copy data fromfields - The record's fields to use for mappingMappingException - wrapping any reflection exception that might
             have occurred while mapping recordsinto(Class), 
from(Object)void from(Object source, String... fieldNames) throws MappingException
 This is the same as from(Object), except that only fields
 contained in the fieldNames argument will be mapped.
source - The source object to copy data fromfieldNames - The record's fields names to use for mappingMappingException - wrapping any reflection exception that might
             have occurred while mapping recordsinto(Class), 
from(Object)void from(Object source, int... fieldIndexes) throws MappingException
 This is the same as from(Object), except that only fields
 contained in the fieldIndexes argument will be mapped.
source - The source object to copy data fromfieldIndexes - The record's fields indexes to use for mappingMappingException - wrapping any reflection exception that might
             have occurred while mapping recordsinto(Class), 
from(Object)void fromMap(Map<String,?> map)
 The argument map is expected to hold field-name / value pairs where
 field-names correspond to actual field names as provided by
 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
 calling record.fromMap(map, record.fields())
intoMap(), 
fromMap(Map, Field...)void fromMap(Map<String,?> map, Field<?>... fields)
 The argument map is expected to hold field-name / value pairs where
 field-names correspond to actual field names as provided by
 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 the fields argument will be mapped.
intoMap(), 
fromMap(Map)void fromMap(Map<String,?> map, String... fieldNames)
 The argument map is expected to hold field-name / value pairs where
 field-names correspond to actual field names as provided by
 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 the fieldNames argument will be mapped.
intoMap(), 
fromMap(Map)void fromMap(Map<String,?> map, int... fieldIndexes)
 The argument map is expected to hold field-name / value pairs where
 field-names correspond to actual field names as provided by
 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 the fieldIndexes argument will be mapped.
intoMap(), 
fromMap(Map)void fromArray(Object... array)
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()
intoArray(), 
fromArray(Object[], Field...)void fromArray(Object[] array, Field<?>... fields)
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 the fields argument will be mapped.
intoArray(), 
fromArray(Object...)void fromArray(Object[] array, String... fieldNames)
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 the fieldNames argument will be mapped.
intoArray(), 
fromArray(Object...)void fromArray(Object[] array, int... fieldIndexes)
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 the fieldIndexes argument will be
 mapped.
intoArray(), 
fromArray(Object...)int hashCode()
Record, based on the underlying row
 value expression.
 
 In order to fulfill the general contract of Object.hashCode() and
 Object.equals(Object), a Record's hash code value
 depends on all hash code values of this Record's underlying
 column values.
hashCode in class Objectequals(Object)boolean equals(Object other)
Record with another Record for
 equality.
 Two records are considered equal if
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
false)false)
 It can be said that for all R1, R2, if R1.equal(R2), then
 R1.compareTo(R2) == 0
equals in class Objectother - The other recordcompareTo(Record), 
hashCode()int compareTo(Record record)
Record with another Record
 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:
 
 Two Records are comparable if and only if they have the same
 ROW type, i.e. if their fieldsRow() methods return fields of the same type and degree.
 
Assume the following notations:
X[i] means X.getValue(i)X = Y means X.compareTo(Y) == 0X < Y means X.compareTo(Y) < 0X[i] = Y[i] means
 (X[i] == null && Y[i] == null) || X[i].compareTo(Y[i]) < 0
 X[i] < Y[i] means
 Y[i] == null || X[i].compareTo(Y[i]) < 0. This
 corresponds to the SQL NULLS LAST clause.r1 and r2,
 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: if 
 OR (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 predicates
 
 Alternative sorting behaviour can be achieved through
 Result.sortAsc(java.util.Comparator) and similar methods.
compareTo in interface Comparable<Record>NullPointerException - If the argument record is nullClassCastException - If the argument record is not comparable with
             this record according to the above rules.Copyright © 2015. All Rights Reserved.