jOOQ 3.20
Last reviewed Sep 23, 2026
Prompt Details
Prompt Composition
2prompts
- Java 21124 lines · 3.9K tokens
- jOOQ 3.2075 lines · 3.3K tokens
Total199 lines · 7.2K tokens
CWE Coverage
- 20
- 22
- 59
- 78
- 79
- 88
- 89
- 95
- 117
- 190
- 197
- 201
- 208
- 209
- 250
- 295
- 297
- 319
- 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 target jOOQ 3.20 on Java 21, using org.jooq for the Open Source Edition or org.jooq.pro for commercial editions, and were checked against 3.20.18. Hidden and readonly columns, client-side computed and audit columns, policies, and model API replacement require a commercial edition. Verify edition support before relying on those features.
Plain SQL and injection
- Build queries with generated tables and fields, pass values through typed DSL operations such as
FIELD.eq(value)orDSL.val(value), and retain the defaultStatementType.PREPARED_STATEMENTfor ordinary DML. - Confine
@PlainSQLentry points, includingDSL.sql, string-basedfield,condition, andtableoverloads, andDSLContext.query,resultQuery,fetch, andexecuteoverloads, to reviewed helpers with trusted SQL structure. - Match the plain SQL overload to its placeholders: use
?withObject...bind arguments, or{0}withQueryPart...arguments such asDSL.val(userValue). AQueryPartargument can contain SQL structure; it is not automatically a bound value. - Keep templates constant or assembled only from reviewed fragments; never concatenate, interpolate, or format request data into them. Placeholders inside literals, quoted identifiers, comments, or JDBC escapes are not substituted by the template mini-parser.
- Keep
renderPlainSQLTemplatesAsRaw=false; enabling it or callingDSL.raw(String)bypasses template processing. Reserve raw SQL for trusted text because it does not bind or sanitize embedded input. - Configure