[jOOQ/jOOQ#17634] Compilation errors in generated POJO code when

generating <immutableInterfaces/> on a table accepting UDTs
This commit is contained in:
Lukas Eder 2024-11-22 08:54:08 +01:00
parent a38317ab5e
commit dc4a45e59f

View File

@ -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 <code>%s</code>.[[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);