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 d262efbe2e..9c6ab73397 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -9679,6 +9679,8 @@ public class JavaGenerator extends AbstractGenerator { else if (db.getDomain(schema, u) != null) { sb.append(getStrategy().getFullJavaIdentifier(db.getDomain(schema, u))); sb.append(".getDataType()"); + + appendTypeReferenceNullability(sb, n); } else if (db.getUDT(schema, u) != null) { sb.append(getStrategy().getFullJavaIdentifier(db.getUDT(schema, u))); @@ -9773,8 +9775,7 @@ public class JavaGenerator extends AbstractGenerator { sb.append(sqlDataTypeRef); } - if (!dataType.nullable()) - sb.append(".nullable(false)"); + appendTypeReferenceNullability(sb, n); if (dataType.identity()) sb.append(".identity(true)"); @@ -9841,6 +9842,11 @@ public class JavaGenerator extends AbstractGenerator { return sb.toString(); } + private final void appendTypeReferenceNullability(StringBuilder sb, boolean n) { + if (!n) + sb.append(".nullable(false)"); + } + private DataType mapTypes(DataType dataType) { DataType result = dataType; diff --git a/jOOQ/src/main/java/org/jooq/impl/DataTypeProxy.java b/jOOQ/src/main/java/org/jooq/impl/DataTypeProxy.java index 7c3d6fd01b..3ec3f215cf 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DataTypeProxy.java +++ b/jOOQ/src/main/java/org/jooq/impl/DataTypeProxy.java @@ -80,7 +80,6 @@ final class DataTypeProxy extends AbstractDataType { this(type, null, null, null, null, null, null, null, null, null, null, null, null); } - @SuppressWarnings("unchecked") private DataTypeProxy( AbstractDataType type, Integer overridePrecision, diff --git a/jOOQ/src/main/java/org/jooq/impl/DomainDataType.java b/jOOQ/src/main/java/org/jooq/impl/DomainDataType.java index b2ea5e7d1c..fe857a9a8a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DomainDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/DomainDataType.java @@ -37,9 +37,16 @@ */ package org.jooq.impl; +import org.jooq.CharacterSet; +import org.jooq.Collation; import org.jooq.Configuration; import org.jooq.DataType; import org.jooq.Domain; +import org.jooq.Field; +import org.jooq.Generator; +import org.jooq.Nullability; +import org.jooq.impl.QOM.GenerationLocation; +import org.jooq.impl.QOM.GenerationOption; /** * A DataType used for {@link Domain} types. @@ -78,6 +85,40 @@ final class DomainDataType extends DefaultDataType { this.baseType = baseType; } + @Override + DefaultDataType construct( + Integer newPrecision, + Integer newScale, + Integer newLength, + Nullability newNullability, + boolean newReadonly, + Generator newGeneratedAlwaysAs, + GenerationOption newGenerationOption, + GenerationLocation newGenerationLocation, + Collation newCollation, + CharacterSet newCharacterSet, + boolean newIdentity, + Field newDefaultValue + ) { + return new DomainDataType<>( + domain, + ((AbstractDataTypeX) baseType).construct( + newPrecision, + newScale, + newLength, + newNullability, + newReadonly, + newGeneratedAlwaysAs, + newGenerationOption, + newGenerationLocation, + newCollation, + newCharacterSet, + newIdentity, + newDefaultValue + ) + ); + } + @Override public final Domain getDomain() { return domain;