diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java
index f441921573..ff06e8c9aa 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java
@@ -66,6 +66,7 @@ abstract class AbstractGenerator implements Generator {
boolean generateUDTs = true;
boolean generateTables = true;
boolean generateRecords = true;
+ boolean generateRecordsImplementingRecordN = true;
boolean generatePojos = false;
boolean generatePojosEqualsAndHashCode = false;
boolean generatePojosToString = true;
@@ -315,6 +316,16 @@ abstract class AbstractGenerator implements Generator {
this.generateRecords = generateRecords;
}
+ @Override
+ public boolean generateRecordsImplementingRecordN() {
+ return generateRecords() && generateRecordsImplementingRecordN;
+ }
+
+ @Override
+ public void setGenerateRecordsImplementingRecordN(boolean generateRecordsImplementingRecordN) {
+ this.generateRecordsImplementingRecordN = generateRecordsImplementingRecordN;
+ }
+
@Override
public boolean generatePojos() {
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
index e84d1e47b9..f72abab5df 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
@@ -540,6 +540,8 @@ public class GenerationTool {
generator.setGenerateTables(g.getGenerate().isTables());
if (g.getGenerate().isRecords() != null)
generator.setGenerateRecords(g.getGenerate().isRecords());
+ if (g.getGenerate().isRecordsImplementingRecordN() != null)
+ generator.setGenerateRecordsImplementingRecordN(g.getGenerate().isRecordsImplementingRecordN());
if (g.getGenerate().isPojos() != null)
generator.setGeneratePojos(g.getGenerate().isPojos());
if (g.getGenerate().isImmutablePojos() != null)
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java
index f9b0574c2f..84c2778bc1 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java
@@ -184,6 +184,16 @@ public interface Generator {
*/
void setGenerateRecords(boolean generateRecords);
+ /**
+ * Whether TableRecords should be generated in addition to tables, which implement Record[N] types
+ */
+ boolean generateRecordsImplementingRecordN();
+
+ /**
+ * Whether TableRecords should be generated in addition to tables, which implement Record[N] types
+ */
+ void setGenerateRecordsImplementingRecordN(boolean generateRecordsImplementingRecordN);
+
/**
* Whether POJO's should be generated in addition to records
*/
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
index 75fe72a83f..e08ed104bd 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
@@ -1123,7 +1123,8 @@ public class JavaGenerator extends AbstractGenerator {
String rowTypeRecord = null;
// [#3130] Invalid UDTs may have a degree of 0
- if (degree > 0 && degree <= Constants.MAX_ROW_DEGREE) {
+ // [#6072] Generate these super types only if configured to do so
+ if (generateRecordsImplementingRecordN() && degree > 0 && degree <= Constants.MAX_ROW_DEGREE) {
rowType = refRowType(out, columns);
if (scala)
@@ -1208,7 +1209,7 @@ public class JavaGenerator extends AbstractGenerator {
}
// [#3130] Invalid UDTs may have a degree of 0
- if (degree > 0 && degree <= Constants.MAX_ROW_DEGREE) {
+ if (generateRecordsImplementingRecordN() && degree > 0 && degree <= Constants.MAX_ROW_DEGREE) {
out.tab(1).header("Record%s type implementation", degree);
// fieldsRow()
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/jaxb/Generate.java b/jOOQ-meta/src/main/java/org/jooq/util/jaxb/Generate.java
index 2b3c8d88f5..d093f69891 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/jaxb/Generate.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/jaxb/Generate.java
@@ -60,6 +60,8 @@ public class Generate implements Serializable
protected Boolean tables = true;
@XmlElement(defaultValue = "true")
protected Boolean records = true;
+ @XmlElement(defaultValue = "true")
+ protected Boolean recordsImplementingRecordN = true;
@XmlElement(defaultValue = "false")
protected Boolean pojos = false;
@XmlElement(defaultValue = "false")
@@ -430,6 +432,30 @@ public class Generate implements Serializable
this.records = value;
}
+ /**
+ * Generate TableRecord classes that implement Record[N] super types
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isRecordsImplementingRecordN() {
+ return recordsImplementingRecordN;
+ }
+
+ /**
+ * Sets the value of the recordsImplementingRecordN property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setRecordsImplementingRecordN(Boolean value) {
+ this.recordsImplementingRecordN = value;
+ }
+
/**
* Generate POJOs.
*
@@ -1145,6 +1171,11 @@ public class Generate implements Serializable
return this;
}
+ public Generate withRecordsImplementingRecordN(Boolean value) {
+ setRecordsImplementingRecordN(value);
+ return this;
+ }
+
public Generate withPojos(Boolean value) {
setPojos(value);
return this;
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd
index 401d33890d..072d8a73bd 100644
--- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd
@@ -876,6 +876,10 @@ jOOQ version used for source code]]>
+
+
+
+