[jOOQ/jOOQ#15097] Compilation error in Oracle generated code for package type in PL/SQL RECORD constructor
This commit is contained in:
parent
11e38fc938
commit
3cd2dd559a
@ -2255,6 +2255,8 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
final boolean isUDT = t.getType(r).isUDT();
|
||||
final boolean isArray = t.getType(r).isArray();
|
||||
final boolean isUDTArray = t.getType(r).isUDTArray();
|
||||
final ArrayDefinition array = database.getArray(t.getType(r).getSchema(), t.getType(r).getQualifiedUserType());
|
||||
final String indexTypeFull = array == null || array.getIndexType() == null ? null : getJavaType(array.getIndexType(resolver(out)), out);
|
||||
final boolean isArrayOfUDTs = isArrayOfUDTs(t, r);
|
||||
|
||||
final String udtType = (isUDT || isArray)
|
||||
@ -2333,15 +2335,21 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
else {
|
||||
if (pojoArgument) {
|
||||
if (isUDTArray) {
|
||||
out.println("%s(value.%s() == null ? null : new %s(value.%s().stream().map(%s::new).collect(%s.toList())));",
|
||||
getStrategy().getJavaSetterName(column, Mode.RECORD),
|
||||
getStrategy().getJavaGetterName(column, Mode.POJO),
|
||||
udtType,
|
||||
generatePojosAsJavaRecordClasses()
|
||||
? getStrategy().getJavaMemberName(column, Mode.POJO)
|
||||
: getStrategy().getJavaGetterName(column, Mode.POJO),
|
||||
udtArrayElementType,
|
||||
Collectors.class);
|
||||
if (indexTypeFull == null) {
|
||||
out.println("%s(value.%s() == null ? null : new %s(value.%s().stream().map(%s::new).collect(%s.toList())));",
|
||||
getStrategy().getJavaSetterName(column, Mode.RECORD),
|
||||
getStrategy().getJavaGetterName(column, Mode.POJO),
|
||||
udtType,
|
||||
generatePojosAsJavaRecordClasses()
|
||||
? getStrategy().getJavaMemberName(column, Mode.POJO)
|
||||
: getStrategy().getJavaGetterName(column, Mode.POJO),
|
||||
udtArrayElementType,
|
||||
Collectors.class);
|
||||
}
|
||||
else {
|
||||
out.println("if (true)");
|
||||
out.println("throw new %s(\"Cannot use POJO constructor for POJO that references Oracle associative array yet. See https://github.com/jOOQ/jOOQ/issues/15108 for details.\");", UnsupportedOperationException.class);
|
||||
}
|
||||
}
|
||||
else if (isArrayOfUDTs) {
|
||||
final String columnTypeFull = getJavaType(t.getType(resolver(out, Mode.POJO)), out, Mode.POJO);
|
||||
@ -6329,33 +6337,29 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
out.println("});");
|
||||
}
|
||||
else
|
||||
out.println("this(alias, aliased, (%s<?>[]) null);", Field.class);
|
||||
out.println("this(alias, aliased, (%s<?>[]) null, null);", Field.class);
|
||||
|
||||
out.println("}");
|
||||
|
||||
out.println();
|
||||
out.println("private %s(%s alias, %s<%s> aliased, %s<?>[] parameters) {", className, Name.class, Table.class, recordType, Field.class);
|
||||
|
||||
if ((generateSourcesOnViews() || table.isSynthetic()) && table.isView() && table.getSource() != null)
|
||||
out.println("super(alias, null, aliased, parameters, %s.comment(\"%s\"), %s.%s(%s));", DSL.class, escapeString(comment(table)), TableOptions.class, tableType, textBlock(table.getSource()));
|
||||
else if (table.isSynthetic() && table.isTableValuedFunction() && table.getSource() != null)
|
||||
out.println("super(alias, null, aliased, parameters, %s.comment(\"%s\"), %s.%s(%s));", DSL.class, escapeString(comment(table)), TableOptions.class, tableType, textBlock(table.getSource()));
|
||||
else
|
||||
out.println("super(alias, null, aliased, parameters, %s.comment(\"%s\"), %s.%s());", DSL.class, escapeString(comment(table)), TableOptions.class, tableType);
|
||||
|
||||
out.println("}");
|
||||
|
||||
if (generateWhereMethodOverrides() && !table.isTableValuedFunction()) {
|
||||
if (table.isTableValuedFunction()) {
|
||||
out.println();
|
||||
out.println("private %s(%s alias, %s<%s> aliased, %s where) {", className, Name.class, Table.class, recordType, Condition.class);
|
||||
|
||||
if ((generateSourcesOnViews() || table.isSynthetic()) && table.isView() && table.getSource() != null)
|
||||
out.println("super(alias, null, aliased, null, %s.comment(\"%s\"), %s.%s(%s), where);", DSL.class, escapeString(comment(table)), TableOptions.class, tableType, textBlock(table.getSource()));
|
||||
else
|
||||
out.println("super(alias, null, aliased, null, %s.comment(\"%s\"), %s.%s(), where);", DSL.class, escapeString(comment(table)), TableOptions.class, tableType);
|
||||
|
||||
out.println("private %s(%s alias, %s<%s> aliased, %s<?>[] parameters) {", className, Name.class, Table.class, recordType, Field.class);
|
||||
out.println("this(alias, aliased, parameters, null);");
|
||||
out.println("}");
|
||||
}
|
||||
|
||||
out.println();
|
||||
out.println("private %s(%s alias, %s<%s> aliased, %s<?>[] parameters, %s where) {", className, Name.class, Table.class, recordType, Field.class, Condition.class);
|
||||
|
||||
|
||||
if ((generateSourcesOnViews() || table.isSynthetic()) && table.isView() && table.getSource() != null)
|
||||
out.println("super(alias, null, aliased, parameters, %s.comment(\"%s\"), %s.%s(%s), where);", DSL.class, escapeString(comment(table)), TableOptions.class, tableType, textBlock(table.getSource()));
|
||||
else if (table.isSynthetic() && table.isTableValuedFunction() && table.getSource() != null)
|
||||
out.println("super(alias, null, aliased, parameters, %s.comment(\"%s\"), %s.%s(%s), where);", DSL.class, escapeString(comment(table)), TableOptions.class, tableType, textBlock(table.getSource()));
|
||||
else
|
||||
out.println("super(alias, null, aliased, parameters, %s.comment(\"%s\"), %s.%s(), where);", DSL.class, escapeString(comment(table)), TableOptions.class, tableType);
|
||||
|
||||
out.println("}");
|
||||
}
|
||||
|
||||
if (scala) {
|
||||
@ -7227,7 +7231,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
|
||||
idt.accept(() -> {
|
||||
out.println("%s%s where(%s condition) {", visibilityPublic(), className, Condition.class);
|
||||
out.println("return new %s(getQualifiedName(), aliased() ? this : null, condition);", className);
|
||||
out.println("return new %s(getQualifiedName(), aliased() ? this : null, null, condition);", className);
|
||||
out.println("}");
|
||||
});
|
||||
idt.accept(() -> {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user