diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java
index aeea05a6de..dc3f516ea9 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java
@@ -37,6 +37,8 @@
*/
package org.jooq.codegen;
+import static java.lang.Boolean.TRUE;
+
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
@@ -56,92 +58,94 @@ import org.jooq.tools.JooqLogger;
*/
abstract class AbstractGenerator implements Generator {
- private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class);
+ private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class);
- boolean generateDeprecated = true;
- boolean generateDeprecationOnUnknownTypes = true;
- boolean generateIndexes = true;
- boolean generateRelations = true;
- boolean generateImplicitJoinPathsToOne = true;
- boolean generateInstanceFields = true;
- boolean generateGeneratedAnnotation = false;
- GeneratedAnnotationType generatedGeneratedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK;
- boolean generateNonnullAnnotation = false;
- String generatedNonnullAnnotationType = "javax.annotation.Nonnull";
- boolean generateNullableAnnotation = false;
- String generatedNullableAnnotationType = "javax.annotation.Nullable";
- boolean useSchemaVersionProvider = false;
- boolean useCatalogVersionProvider = false;
- boolean generateRoutines = true;
- boolean generateSequences = true;
- boolean generateSequenceFlags = true;
- boolean generateUDTs = true;
- boolean generateTables = true;
- boolean generateEmbeddables = true;
- boolean generateRecords = true;
- boolean generateRecordsImplementingRecordN = true;
- boolean generatePojos = false;
- boolean generatePojosEqualsAndHashCode = false;
- boolean generatePojosToString = true;
- boolean generateImmutablePojos = false;
- boolean generateSerializablePojos = true;
- boolean generateInterfaces = false;
- boolean generateImmutableInterfaces = false;
- boolean generateSerializableInterfaces = true;
- boolean generateDaos = false;
- boolean generateJPAAnnotations = false;
- String generateJPAVersion = "";
- boolean generateValidationAnnotations = false;
- boolean generateSpringAnnotations = false;
- boolean generateQueues = true;
- boolean generateLinks = true;
- boolean generateKeys = true;
- boolean generateGlobalObjectReferences = true;
- boolean generateGlobalCatalogReferences = true;
- boolean generateGlobalSchemaReferences = true;
- boolean generateGlobalRoutineReferences = true;
- boolean generateGlobalSequenceReferences = true;
- boolean generateGlobalTableReferences = true;
- boolean generateGlobalUDTReferences = true;
- boolean generateGlobalQueueReferences = true;
- boolean generateGlobalLinkReferences = true;
- boolean generateGlobalKeyReferences = true;
- boolean generateGlobalIndexReferences = true;
- boolean generateJavadoc = true;
- boolean generateComments = true;
- boolean generateCommentsOnAttributes = true;
- boolean generateCommentsOnCatalogs = true;
- boolean generateCommentsOnColumns = true;
- boolean generateCommentsOnKeys = true;
- boolean generateCommentsOnLinks = true;
- boolean generateCommentsOnPackages = true;
- boolean generateCommentsOnParameters = true;
- boolean generateCommentsOnQueues = true;
- boolean generateCommentsOnRoutines = true;
- boolean generateCommentsOnSchemas = true;
- boolean generateCommentsOnSequences = true;
- boolean generateCommentsOnTables = true;
- boolean generateCommentsOnUDTs = true;
- boolean generateSources = true;
- boolean generateSourcesOnViews = true;
- boolean generateFluentSetters = false;
- boolean generateJavaBeansGettersAndSetters = false;
- boolean generateVarargsSetters = true;
- String generateFullyQualifiedTypes = "";
- boolean generateJavaTimeTypes = true;
- boolean generateTableValuedFunctions = false;
- boolean generateEmptyCatalogs = false;
- boolean generateEmptySchemas = false;
- boolean generatePrimaryKeyTypes = false;
- String generateNewline = "\n";
+ boolean generateDeprecated = true;
+ boolean generateDeprecationOnUnknownTypes = true;
+ boolean generateIndexes = true;
+ boolean generateRelations = true;
+ boolean generateImplicitJoinPathsToOne = true;
+ boolean generateInstanceFields = true;
+ boolean generateGeneratedAnnotation = false;
+ GeneratedAnnotationType generatedGeneratedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK;
+ boolean generateNonnullAnnotation = false;
+ String generatedNonnullAnnotationType = "javax.annotation.Nonnull";
+ boolean generateNullableAnnotation = false;
+ String generatedNullableAnnotationType = "javax.annotation.Nullable";
+ boolean generateConstructorPropertiesAnnotation = false;
+ Boolean generateConstructorPropertiesAnnotationOnPojos;
+ Boolean generateConstructorPropertiesAnnotationOnRecords;
+ boolean useSchemaVersionProvider = false;
+ boolean useCatalogVersionProvider = false;
+ boolean generateRoutines = true;
+ boolean generateSequences = true;
+ boolean generateSequenceFlags = true;
+ boolean generateUDTs = true;
+ boolean generateTables = true;
+ boolean generateEmbeddables = true;
+ boolean generateRecords = true;
+ boolean generateRecordsImplementingRecordN = true;
+ boolean generatePojos = false;
+ boolean generatePojosEqualsAndHashCode = false;
+ boolean generatePojosToString = true;
+ boolean generateImmutablePojos = false;
+ boolean generateSerializablePojos = true;
+ boolean generateInterfaces = false;
+ boolean generateImmutableInterfaces = false;
+ boolean generateSerializableInterfaces = true;
+ boolean generateDaos = false;
+ boolean generateJPAAnnotations = false;
+ String generateJPAVersion = "";
+ boolean generateValidationAnnotations = false;
+ boolean generateSpringAnnotations = false;
+ boolean generateQueues = true;
+ boolean generateLinks = true;
+ boolean generateKeys = true;
+ boolean generateGlobalObjectReferences = true;
+ boolean generateGlobalCatalogReferences = true;
+ boolean generateGlobalSchemaReferences = true;
+ boolean generateGlobalRoutineReferences = true;
+ boolean generateGlobalSequenceReferences = true;
+ boolean generateGlobalTableReferences = true;
+ boolean generateGlobalUDTReferences = true;
+ boolean generateGlobalQueueReferences = true;
+ boolean generateGlobalLinkReferences = true;
+ boolean generateGlobalKeyReferences = true;
+ boolean generateGlobalIndexReferences = true;
+ boolean generateJavadoc = true;
+ boolean generateComments = true;
+ boolean generateCommentsOnAttributes = true;
+ boolean generateCommentsOnCatalogs = true;
+ boolean generateCommentsOnColumns = true;
+ boolean generateCommentsOnKeys = true;
+ boolean generateCommentsOnLinks = true;
+ boolean generateCommentsOnPackages = true;
+ boolean generateCommentsOnParameters = true;
+ boolean generateCommentsOnQueues = true;
+ boolean generateCommentsOnRoutines = true;
+ boolean generateCommentsOnSchemas = true;
+ boolean generateCommentsOnSequences = true;
+ boolean generateCommentsOnTables = true;
+ boolean generateCommentsOnUDTs = true;
+ boolean generateSources = true;
+ boolean generateSourcesOnViews = true;
+ boolean generateFluentSetters = false;
+ boolean generateJavaBeansGettersAndSetters = false;
+ boolean generateVarargsSetters = true;
+ String generateFullyQualifiedTypes = "";
+ boolean generateJavaTimeTypes = true;
+ boolean generateTableValuedFunctions = false;
+ boolean generateEmptyCatalogs = false;
+ boolean generateEmptySchemas = false;
+ boolean generatePrimaryKeyTypes = false;
+ String generateNewline = "\n";
String generateIndentation;
protected GeneratorStrategyWrapper strategy;
- protected String targetEncoding = "UTF-8";
- protected boolean targetClean = true;
+ protected String targetEncoding = "UTF-8";
+ protected boolean targetClean = true;
final Language language;
-
AbstractGenerator(Language language) {
this.language = language;
}
@@ -343,6 +347,38 @@ abstract class AbstractGenerator implements Generator {
this.generatedNullableAnnotationType = generatedNullableAnnotationType;
}
+ @Override
+ public void setGenerateConstructorPropertiesAnnotation(boolean generateConstructorPropertiesAnnotation) {
+ this.generateConstructorPropertiesAnnotation = generateConstructorPropertiesAnnotation;
+ }
+
+ @Override
+ public boolean generateConstructorPropertiesAnnotation() {
+ return generateConstructorPropertiesAnnotation;
+ }
+
+ @Override
+ public void setGenerateConstructorPropertiesAnnotationOnPojos(boolean generateConstructorPropertiesAnnotationOnPojos) {
+ this.generateConstructorPropertiesAnnotationOnPojos = generateConstructorPropertiesAnnotationOnPojos;
+ }
+
+ @Override
+ public boolean generateConstructorPropertiesAnnotationOnPojos() {
+ return TRUE.equals(generateConstructorPropertiesAnnotationOnPojos) ||
+ generateConstructorPropertiesAnnotation() && generateConstructorPropertiesAnnotationOnPojos == null;
+ }
+
+ @Override
+ public void setGenerateConstructorPropertiesAnnotationOnRecords(boolean generateConstructorPropertiesAnnotationOnRecords) {
+ this.generateConstructorPropertiesAnnotationOnRecords = generateConstructorPropertiesAnnotationOnRecords;
+ }
+
+ @Override
+ public boolean generateConstructorPropertiesAnnotationOnRecords() {
+ return TRUE.equals(generateConstructorPropertiesAnnotationOnPojos) ||
+ generateConstructorPropertiesAnnotation() && generateConstructorPropertiesAnnotationOnRecords == null;
+ }
+
@Override
public boolean useSchemaVersionProvider() {
return useSchemaVersionProvider;
diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
index e56c4ee3ba..7bedfc3139 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
@@ -678,6 +678,12 @@ public class GenerationTool {
generator.setGenerateNullableAnnotation(g.getGenerate().isNullableAnnotation());
if (g.getGenerate().getNullableAnnotationType() != null)
generator.setGeneratedNullableAnnotationType(g.getGenerate().getNullableAnnotationType());
+ if (g.getGenerate().isConstructorPropertiesAnnotation() != null)
+ generator.setGenerateConstructorPropertiesAnnotation(g.getGenerate().isConstructorPropertiesAnnotation());
+ if (g.getGenerate().isConstructorPropertiesAnnotationOnPojos() != null)
+ generator.setGenerateConstructorPropertiesAnnotationOnPojos(g.getGenerate().isConstructorPropertiesAnnotationOnPojos());
+ if (g.getGenerate().isConstructorPropertiesAnnotationOnRecords() != null)
+ generator.setGenerateConstructorPropertiesAnnotationOnRecords(g.getGenerate().isConstructorPropertiesAnnotationOnRecords());
if (g.getGenerate().isRoutines() != null)
generator.setGenerateRoutines(g.getGenerate().isRoutines());
if (g.getGenerate().isSequences() != null)
diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java
index 06588dd93e..3e23f0c36a 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java
@@ -213,6 +213,37 @@ public interface Generator {
*/
void setGeneratedNullableAnnotationType(String generatedNullableAnnotationType);
+ /**
+ * Whether the ConstructorProperties annotation should be generated.
+ */
+ void setGenerateConstructorPropertiesAnnotation(boolean generateConstructorPropertiesAnnotation);
+
+ /**
+ * Whether the ConstructorProperties annotation should be generated.
+ */
+ boolean generateConstructorPropertiesAnnotation();
+
+ /**
+ * Whether the ConstructorProperties annotation should be generated on POJOs.
+ */
+ void setGenerateConstructorPropertiesAnnotationOnPojos(boolean generateConstructorPropertiesAnnotationOnPojos);
+
+ /**
+ * Whether the ConstructorProperties annotation should be generated on POJOs.
+ */
+ boolean generateConstructorPropertiesAnnotationOnPojos();
+
+ /**
+ * Whether the ConstructorProperties annotation should be generated on records.
+ */
+ void setGenerateConstructorPropertiesAnnotationOnRecords(boolean generateConstructorPropertiesAnnotationOnRecords);
+
+ /**
+ * Whether the ConstructorProperties annotation should be generated on records.
+ */
+ boolean generateConstructorPropertiesAnnotationOnRecords();
+
+
boolean useSchemaVersionProvider();
void setUseSchemaVersionProvider(boolean useSchemaVersionProvider);
boolean useCatalogVersionProvider();
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 e431dc9556..5812d79c49 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java
@@ -52,6 +52,7 @@ import static org.jooq.meta.AbstractTypedElementDefinition.getDataType;
import static org.jooq.tools.StringUtils.defaultIfBlank;
import static org.jooq.tools.StringUtils.defaultString;
+import java.beans.ConstructorProperties;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -1585,6 +1586,7 @@ public class JavaGenerator extends AbstractGenerator {
// [#3176] Avoid generating constructors for tables with more than 255 columns (Java's method argument limit)
if (degree > 0 && degree < 256) {
List arguments = new ArrayList<>(degree);
+ List properties = new ArrayList<>(degree);
for (int i = 0; i < degree; i++) {
final TypedElementDefinition> column = columns.get(i);
@@ -1599,6 +1601,8 @@ public class JavaGenerator extends AbstractGenerator {
arguments.add((nullableAnnotation == null ? "" : "@" + nullableAnnotation + " ") + type + " " + columnMember);
}
+
+ properties.add("\"" + escapeString(columnMember) + "\"");
}
out.tab(1).javadoc("Create a detached, initialised %s", className);
@@ -1608,6 +1612,9 @@ public class JavaGenerator extends AbstractGenerator {
out.tab(2).println("this()", tableIdentifier);
}
else {
+ if (generateConstructorPropertiesAnnotationOnRecords())
+ out.tab(1).println("@%s({ [[%s]] })", ConstructorProperties.class, properties);
+
out.tab(1).println("public %s([[%s]]) {", className, arguments);
if (tableUdtOrEmbeddable instanceof EmbeddableDefinition)
@@ -3381,10 +3388,13 @@ public class JavaGenerator extends AbstractGenerator {
*/
protected void generatePojoMultiConstructor(Definition tableOrUDT, JavaWriter out) {
final String className = getStrategy().getJavaClassName(tableOrUDT, Mode.POJO);
+ final List properties = new ArrayList<>();
int maxLength = 0;
- for (TypedElementDefinition> column : getTypedElements(tableOrUDT))
+ for (TypedElementDefinition> column : getTypedElements(tableOrUDT)) {
maxLength = Math.max(maxLength, out.ref(getJavaType(column.getType(resolver(Mode.POJO)), Mode.POJO)).length());
+ properties.add("\"" + escapeString(getStrategy().getJavaMemberName(column, Mode.POJO)) + "\"");
+ }
if (scala) {
}
@@ -3394,6 +3404,10 @@ public class JavaGenerator extends AbstractGenerator {
else if (getTypedElements(tableOrUDT).size() > 0 &&
getTypedElements(tableOrUDT).size() < 256) {
out.println();
+
+ if (generateConstructorPropertiesAnnotationOnPojos())
+ out.tab(1).println("@%s({ [[%s]] })", ConstructorProperties.class, properties);
+
out.tab(1).print("public %s(", className);
String separator1 = "";
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java
index 1e38a0c15c..277175f2b8 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java
@@ -32,7 +32,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class CatalogMappingType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(required = true, defaultValue = "")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String inputCatalog = "";
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java
index f6db3634a2..cf18a562d1 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java
@@ -48,7 +48,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Configuration implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlSchemaType(name = "string")
protected Logging logging;
@XmlElement(defaultValue = "FAIL")
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java
index 793c7b0e4e..dcb79cbcb1 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java
@@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class CustomType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(required = true)
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java
index 05acc43c69..86b55e67db 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java
@@ -33,7 +33,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Database implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name;
@XmlList
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java
index f5ef297b78..71609b7567 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java
@@ -32,7 +32,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Embeddable implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name;
@XmlElementWrapper(name = "fields")
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java
index 297b7419b4..a1d62453d1 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java
@@ -42,7 +42,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class EmbeddableField implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name;
@XmlElement(required = true)
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java
index 14119da627..db2581f2ae 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java
@@ -42,7 +42,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class EnumType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(required = true)
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java
index e13a188820..d784ddf04e 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java
@@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class ForcedType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name;
@XmlJavaTypeAdapter(StringAdapter.class)
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java
index 0a5f02c237..f644d42e71 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java
@@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Generate implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(defaultValue = "true")
protected Boolean indexes = true;
@XmlElement(defaultValue = "true")
@@ -59,6 +59,10 @@ public class Generate implements Serializable, XMLAppendable
@XmlElement(defaultValue = "javax.annotation.Nullable")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String nullableAnnotationType = "javax.annotation.Nullable";
+ @XmlElement(defaultValue = "false")
+ protected Boolean constructorPropertiesAnnotation = false;
+ protected Boolean constructorPropertiesAnnotationOnPojos;
+ protected Boolean constructorPropertiesAnnotationOnRecords;
@XmlElement(defaultValue = "true")
protected Boolean routines = true;
@XmlElement(defaultValue = "true")
@@ -480,6 +484,78 @@ public class Generate implements Serializable, XMLAppendable
this.nullableAnnotationType = value;
}
+ /**
+ * Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs and/or records.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isConstructorPropertiesAnnotation() {
+ return constructorPropertiesAnnotation;
+ }
+
+ /**
+ * Sets the value of the constructorPropertiesAnnotation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setConstructorPropertiesAnnotation(Boolean value) {
+ this.constructorPropertiesAnnotation = value;
+ }
+
+ /**
+ * Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs (defaults to true if {@link #constructorPropertiesAnnotation} is active).
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isConstructorPropertiesAnnotationOnPojos() {
+ return constructorPropertiesAnnotationOnPojos;
+ }
+
+ /**
+ * Sets the value of the constructorPropertiesAnnotationOnPojos property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setConstructorPropertiesAnnotationOnPojos(Boolean value) {
+ this.constructorPropertiesAnnotationOnPojos = value;
+ }
+
+ /**
+ * Generate the {@link java.beans.ConstructorProperties} annotation on generated records (defaults to true if {@link #constructorPropertiesAnnotation} is active).
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isConstructorPropertiesAnnotationOnRecords() {
+ return constructorPropertiesAnnotationOnRecords;
+ }
+
+ /**
+ * Sets the value of the constructorPropertiesAnnotationOnRecords property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setConstructorPropertiesAnnotationOnRecords(Boolean value) {
+ this.constructorPropertiesAnnotationOnRecords = value;
+ }
+
/**
* Generate Routine classes.
*
@@ -2020,6 +2096,21 @@ public class Generate implements Serializable, XMLAppendable
return this;
}
+ public Generate withConstructorPropertiesAnnotation(Boolean value) {
+ setConstructorPropertiesAnnotation(value);
+ return this;
+ }
+
+ public Generate withConstructorPropertiesAnnotationOnPojos(Boolean value) {
+ setConstructorPropertiesAnnotationOnPojos(value);
+ return this;
+ }
+
+ public Generate withConstructorPropertiesAnnotationOnRecords(Boolean value) {
+ setConstructorPropertiesAnnotationOnRecords(value);
+ return this;
+ }
+
public Generate withRoutines(Boolean value) {
setRoutines(value);
return this;
@@ -2360,6 +2451,9 @@ public class Generate implements Serializable, XMLAppendable
builder.append("nonnullAnnotationType", nonnullAnnotationType);
builder.append("nullableAnnotation", nullableAnnotation);
builder.append("nullableAnnotationType", nullableAnnotationType);
+ builder.append("constructorPropertiesAnnotation", constructorPropertiesAnnotation);
+ builder.append("constructorPropertiesAnnotationOnPojos", constructorPropertiesAnnotationOnPojos);
+ builder.append("constructorPropertiesAnnotationOnRecords", constructorPropertiesAnnotationOnRecords);
builder.append("routines", routines);
builder.append("sequences", sequences);
builder.append("udts", udts);
@@ -2559,6 +2653,33 @@ public class Generate implements Serializable, XMLAppendable
return false;
}
}
+ if (constructorPropertiesAnnotation == null) {
+ if (other.constructorPropertiesAnnotation!= null) {
+ return false;
+ }
+ } else {
+ if (!constructorPropertiesAnnotation.equals(other.constructorPropertiesAnnotation)) {
+ return false;
+ }
+ }
+ if (constructorPropertiesAnnotationOnPojos == null) {
+ if (other.constructorPropertiesAnnotationOnPojos!= null) {
+ return false;
+ }
+ } else {
+ if (!constructorPropertiesAnnotationOnPojos.equals(other.constructorPropertiesAnnotationOnPojos)) {
+ return false;
+ }
+ }
+ if (constructorPropertiesAnnotationOnRecords == null) {
+ if (other.constructorPropertiesAnnotationOnRecords!= null) {
+ return false;
+ }
+ } else {
+ if (!constructorPropertiesAnnotationOnRecords.equals(other.constructorPropertiesAnnotationOnRecords)) {
+ return false;
+ }
+ }
if (routines == null) {
if (other.routines!= null) {
return false;
@@ -3128,6 +3249,9 @@ public class Generate implements Serializable, XMLAppendable
result = ((prime*result)+((nonnullAnnotationType == null)? 0 :nonnullAnnotationType.hashCode()));
result = ((prime*result)+((nullableAnnotation == null)? 0 :nullableAnnotation.hashCode()));
result = ((prime*result)+((nullableAnnotationType == null)? 0 :nullableAnnotationType.hashCode()));
+ result = ((prime*result)+((constructorPropertiesAnnotation == null)? 0 :constructorPropertiesAnnotation.hashCode()));
+ result = ((prime*result)+((constructorPropertiesAnnotationOnPojos == null)? 0 :constructorPropertiesAnnotationOnPojos.hashCode()));
+ result = ((prime*result)+((constructorPropertiesAnnotationOnRecords == null)? 0 :constructorPropertiesAnnotationOnRecords.hashCode()));
result = ((prime*result)+((routines == null)? 0 :routines.hashCode()));
result = ((prime*result)+((sequences == null)? 0 :sequences.hashCode()));
result = ((prime*result)+((udts == null)? 0 :udts.hashCode()));
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java
index 32d6cd0ad6..79f096378b 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java
@@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Generator implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(defaultValue = "org.jooq.codegen.DefaultGenerator")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name = "org.jooq.codegen.DefaultGenerator";
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java
index de50b2989d..77a55449eb 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java
@@ -32,7 +32,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Jdbc implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String driver;
@XmlElement(required = true)
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java
index 5f32cc314c..eb6f26ea87 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java
@@ -43,7 +43,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatcherRule implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlSchemaType(name = "string")
protected MatcherTransformType transform;
@XmlElement(required = true)
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java
index cf4296ba7e..fe8b2dd713 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java
@@ -35,7 +35,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Matchers implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElementWrapper(name = "schemas")
@XmlElement(name = "schema")
protected List schemas;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java
index f501889323..48bc818d8e 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java
@@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatchersEnumType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String expression;
protected MatcherRule enumClass;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java
index ec6e1a1aaf..4ae531b25c 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java
@@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatchersFieldType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String expression;
protected MatcherRule fieldIdentifier;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java
index 58fc7990af..ead055130a 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java
@@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatchersRoutineType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String expression;
protected MatcherRule routineClass;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java
index ba80e75352..02f1cbd7ce 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java
@@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatchersSchemaType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String expression;
protected MatcherRule schemaClass;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java
index b5e2627015..9af9c16277 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java
@@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatchersSequenceType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String expression;
protected MatcherRule sequenceIdentifier;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java
index 5dd0c24d66..3a8781fb25 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java
@@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class MatchersTableType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String expression;
protected MatcherRule tableClass;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java
index cf5f42ac62..83faa2ea4b 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java
@@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Property implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(required = true)
@XmlJavaTypeAdapter(StringAdapter.class)
protected String key;
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java
index bc9280b6b0..f017551d92 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java
@@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class SchemaMappingType implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(required = true, defaultValue = "")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String inputSchema = "";
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java
index bebcada569..f3beb15129 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java
@@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Strategy implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(defaultValue = "org.jooq.codegen.DefaultGeneratorStrategy")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String name = "org.jooq.codegen.DefaultGeneratorStrategy";
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java
index 5589dd0171..2dee29da11 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java
@@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Target implements Serializable, XMLAppendable
{
- private final static long serialVersionUID = 31200L;
+ private final static long serialVersionUID = 31400L;
@XmlElement(defaultValue = "org.jooq.generated")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String packageName = "org.jooq.generated";
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.13.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd
similarity index 98%
rename from jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.13.0.xsd
rename to jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd
index 4f1561e53d..a251b981a1 100644
--- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.13.0.xsd
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd
@@ -1155,6 +1155,18 @@ jOOQ version used for source code.]]>
+
+
+
+
+
+
+ true if {@link #constructorPropertiesAnnotation} is active).]]>
+
+
+
+ true if {@link #constructorPropertiesAnnotation} is active).]]>
+