jOOQ 3.21

Last reviewed Sep 19, 2026

Export as PDF

Prompt Details

Prompt Composition

2prompts
  1. Java 21124 lines · 3.9K tokens
  2. jOOQ 3.2160 lines · 2.8K tokens
Total184 lines · 6.7K tokens

CWE Coverage

  • 20
  • 22
  • 59
  • 78
  • 79
  • 88
  • 89
  • 95
  • 117
  • 190
  • 197
  • 201
  • 208
  • 209
  • 250
  • 295
  • 297
  • 323
  • 327
  • 338
  • 347
  • 362
  • 367
  • 378
  • 427
  • 470
  • 471
  • 488
  • 489
  • 494
  • 502
  • 532
  • 566
  • 611
  • 653
  • 732
  • 759
  • 770
  • 772
  • 776
  • 807
  • 862
  • 863
  • 915
  • 916
  • 918
  • 922
  • 1333

Prompt Preview

Apply the Java 21 prompt first. These rules cover jOOQ 3.21 on Java 21, with the Open Source Edition as the baseline, and were checked against 3.21.7. Apply rules for commercial policies and hidden, readonly, or redacted columns only when the deployed edition supports them.

Version scope and generated code

  • Align jooq, jooq-meta, jooq-codegen, generator plugins, and extension modules to the same release and compatible edition/JDK distribution; configure the SQLDialect for the deployed database.
  • Generate from a trusted schema with a separate metadata account, and restrict the application's database role to required runtime operations. Review generator configuration, forced types, custom strategies, converters, bindings, and generated output after migrations; code-generation includes/excludes do not restrict database access at runtime.
  • Check resolved dependencies as well as jOOQ's version: application BOMs and overrides must not undo 3.21.7's Jackson and Spring security updates. Assess advisories for the optional modules and dependency versions actually installed.

SQL construction and escape hatches

  • Use generated fields, typed DSL comparisons, and DSL.val() for values; retain the default StatementType.PREPARED_STATEMENT for ordinary application queries.
  • Restrict @PlainSQL APIs, including DSL.sql(), string overloads of condition, field, table, query, resultQuery, and fluent where/from, to reviewed constant templates. Pass values through ? bindings or DSL.val() query parts in {0} templates; never interpolate input into