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 6a6d2e50ff..cdd9cb315f 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -6548,7 +6548,7 @@ public class JavaGenerator extends AbstractGenerator { } } - for (ColumnDefinition column : table.getColumns()) { + for (ColumnDefinition column : table.getColumnsIncludingHidden()) { final DataTypeDefinition columnTypeDef = column.getType(resolver(out)); final DomainDefinition domain = schema.getDatabase().getDomain(schema, columnTypeDef.getQualifiedUserType()); final String columnTypeFull = getJavaType(columnTypeDef, out); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractElementContainerDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractElementContainerDefinition.java index 93ec630980..1c43a0bc0f 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractElementContainerDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractElementContainerDefinition.java @@ -74,6 +74,7 @@ extends AbstractDefinition { private static final JooqLogger log = JooqLogger.getLogger(AbstractElementContainerDefinition.class); private List elements; + private List elementsIncludingHidden; public AbstractElementContainerDefinition(SchemaDefinition schema, String name, String comment) { this(schema, null, name, comment); @@ -91,6 +92,7 @@ extends AbstractDefinition { protected final List getElements() { if (elements == null) { elements = new ArrayList<>(); + elementsIncludingHidden = new ArrayList<>(); try { AbstractDatabase db = (AbstractDatabase) getDatabase(); @@ -149,13 +151,18 @@ extends AbstractDefinition { // [#2603] Filter exclude / include also for table columns if (this instanceof TableDefinition && db.getIncludeExcludeColumns()) { - elements = db.filterExcludeInclude(e); + elementsIncludingHidden = db.filterExcludeInclude(e); log.info("Columns fetched", fetchedSize(e, elements)); } else - elements = e; + elementsIncludingHidden = e; + + db.sort(elementsIncludingHidden); + elements.addAll(elementsIncludingHidden); + + + - db.sort(elements); } catch (Exception e) { log.error("Error while initialising type", e); @@ -165,6 +172,11 @@ extends AbstractDefinition { return elements; } + protected final List getElementsIncludingHidden() { + getElements(); + return elementsIncludingHidden; + } + diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTableDefinition.java index 63c3833318..322392675c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractTableDefinition.java @@ -292,6 +292,11 @@ implements return getElements(); } + @Override + public final List getColumnsIncludingHidden() { + return getElementsIncludingHidden(); + } + @Override public final ColumnDefinition getColumn(String columnName) { return getElement(columnName); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/TableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/TableDefinition.java index 46f3b45eec..a78e5d275f 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/TableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/TableDefinition.java @@ -59,6 +59,11 @@ public interface TableDefinition extends Definition { */ List getColumns(); + /** + * All columns in the type, table or view, including hidden columns. + */ + List getColumnsIncludingHidden(); + /** * Get a column in this type by its name. */