From dc4a45e59f113963a33d75ef7e9b081dd4ef056b Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 22 Nov 2024 08:54:08 +0100 Subject: [PATCH] [jOOQ/jOOQ#17634] Compilation errors in generated POJO code when generating on a table accepting UDTs --- .../src/main/java/org/jooq/codegen/JavaGenerator.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 9ed0030803..deb3c2d4ec 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -6754,11 +6754,12 @@ public class JavaGenerator extends AbstractGenerator { final String columnSetter = getStrategy().getJavaSetterName(column, Mode.POJO); final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO); final boolean isUDT = column.getType(resolver(out)).isUDT(); - final boolean isUDTArray = column.getType(resolver(out)).isUDTArray(); + final boolean isArray = column.getType(resolver(out)).isArray(); final String name = column.getQualifiedOutputName(); + final boolean override = generateInterfaces() && !generateImmutableInterfaces() && !isUDT; // We cannot have covariant setters for arrays because of type erasure - if (!(generateInterfaces() && isUDTArray)) { + if (!(generateInterfaces() && (isArray || isUDT))) { if (!printDeprecationIfUnknownType(out, columnTypeFull)) out.javadoc("Setter for %s.[[before= ][%s]]", name, list(escapeEntities(comment(column)))); @@ -6774,7 +6775,7 @@ public class JavaGenerator extends AbstractGenerator { else { final String nullableAnnotation = nullableOrNonnullAnnotation(out, column); - out.overrideIf(generateInterfaces() && !generateImmutableInterfaces() && !isUDT); + out.overrideIf(override); out.println("%s%s %s([[before=@][after= ][%s]]%s %s) {", visibility(), columnSetterReturnType, columnSetter, list(nullableAnnotation), varargsIfArray(columnType), columnMember); out.println("this.%s = %s;", columnMember, columnMember); @@ -6786,7 +6787,7 @@ public class JavaGenerator extends AbstractGenerator { } // [#3117] To avoid covariant setters on POJOs, we need to generate two setter overloads - if (generateInterfaces() && (isUDT || isUDTArray)) { + if (generateInterfaces() && (isUDT || isArray)) { final String columnTypeInterface = out.ref(getJavaType(column.getType(resolver(out, Mode.INTERFACE)), out, Mode.INTERFACE)); out.println(); @@ -6804,7 +6805,7 @@ public class JavaGenerator extends AbstractGenerator { out.println("}"); } else { - out.override(); + out.overrideIf(override); out.println("%s%s %s(%s %s) {", visibility(), columnSetterReturnType, columnSetter, varargsIfArray(columnTypeInterface), columnMember); out.println("this.%s = to%s(%s);", columnMember, toUC(columnMember), columnMember);