All versions: 3.11 | 3.10 | 3.9 | Development versions: 3.12

jOOQ's org.jooq.UpdatableRecord supports an optimistic locking feature, which can be enabled in the code generator by specifying a regular expression that defines such a record's version and/or timestamp fields. These regular expressions should match at most one column per table, again either by their fully qualified names (catalog.schema.table.column_name) or by their names only (column_name):

XML configuration (standalone and Maven)

<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd">
  <generator>
    <database>
      <recordVersionFields>REC_VERSION</recordVersionFields>
      <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields>
    </database>
  </generator>
</configuration>

Programmatic configuration

configuration
  .withGenerator(new Generator(
    .withDatabase(new Database()
      .withRecordVersionFields("REC_VERSION")
      .withRecordTimestampFields("REC_TIMESTAMP"))));

Gradle configuration

myConfigurationName(sourceSets.main) {
  generator {
    database {
      recordVersionFields = 'REC_VERSION'
      recordTimestampFields = 'REC_TIMESTAMP'
    }
  }
}

Note again that these expressions are regular expressions with default flags

The jOOQ Logo