From 54a336685dafb879fecf7dd484ee8a8d0b736289 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 16 Sep 2024 13:22:39 +0200 Subject: [PATCH] [jOOQ/jOOQ#17247] Log warnings when Java record constructor has more than 254 parameters --- .../java/org/jooq/codegen/JavaGenerator.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index 85d77423a3..e6eed61e62 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -5965,6 +5965,28 @@ public class JavaGenerator extends AbstractGenerator { }); out.println(")[[before= implements ][%s]] {", interfaces); + + if (replacingEmbeddablesAndUnreplacedColumns.size() >= 255) + log.warn( + """ + {object} has more than 254 {elements}. There's no workaround that the code generator could implement out of the box. + + Workarounds that could be implemented in your configuration include: + - Excluding the object from the code generation + - Switching to a different POJO style that doesn't require mandatory canonical constructors + - Use replacing embeddables to reduce the column number: https://www.jooq.org/doc/latest/manual/code-generation/codegen-embeddable-types/codegen-embeddable-types-replacing-fields/ + """.replace("{object}", + tableUdtOrEmbeddable instanceof EmbeddableDefinition + ? "Embeddable " + tableUdtOrEmbeddable + : tableUdtOrEmbeddable instanceof UDTDefinition + ? "UDT " + tableUdtOrEmbeddable + : "Table " + tableUdtOrEmbeddable + ).replace("{elements}", + tableUdtOrEmbeddable instanceof UDTDefinition + ? "attributes" + : "columns" + )); + } else { out.println("%s%sclass %s[[before= extends ][%s]][[before= implements ][%s]] {", visibility(), abstract_, className, list(superName), interfaces);