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 e2a0ba2ad8..a831a75bcf 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java
@@ -104,6 +104,7 @@ abstract class AbstractGenerator implements Generator {
boolean generateImmutableInterfaces = false;
boolean generateSerializableInterfaces = true;
boolean generateDaos = false;
+ boolean generateJooqVersionReference = true;
boolean generateJPAAnnotations = false;
String generateJPAVersion = "";
boolean generateValidationAnnotations = false;
@@ -627,6 +628,16 @@ abstract class AbstractGenerator implements Generator {
this.generateDaos = generateDaos;
}
+ @Override
+ public boolean generateJooqVersionReference() {
+ return generateJooqVersionReference;
+ }
+
+ @Override
+ public void setGenerateJooqVersionReference(boolean generateJooqVersionReference) {
+ this.generateJooqVersionReference = generateJooqVersionReference;
+ }
+
@Override
public boolean generateJPAAnnotations() {
return generateJPAAnnotations;
diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java
index 3da4e5e4a7..339b3c9b5f 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java
@@ -53,7 +53,7 @@ public final class Constants {
/**
* The latest jOOQ minor version.
*/
- public static final String MINOR_VERSION = "3.15";
+ public static final String MINOR_VERSION = "3.16";
/**
* The latest jOOQ version.
@@ -155,6 +155,16 @@ public final class Constants {
+ /**
+ * The minor release 3.15.
+ */
+ public static final String VERSION_3_15 = "3.15";
+
+ /**
+ * The minor release 3.16.
+ */
+ public static final String VERSION_3_16 = "3.16";
+
/**
* No further instances
*/
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 814586dd91..f557e215a0 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
@@ -754,6 +754,8 @@ public class GenerationTool {
generator.setGenerateSerializableInterfaces(g.getGenerate().isSerializableInterfaces());
if (g.getGenerate().isDaos() != null)
generator.setGenerateDaos(g.getGenerate().isDaos());
+ if (g.getGenerate().isJooqVersionReference() != null)
+ generator.setGenerateJooqVersionReference(g.getGenerate().isJooqVersionReference());
if (g.getGenerate().isJpaAnnotations() != null)
generator.setGenerateJPAAnnotations(g.getGenerate().isJpaAnnotations());
if (g.getGenerate().getJpaVersion() != 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 e2a57809b8..f02913bc95 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java
@@ -41,6 +41,7 @@ package org.jooq.codegen;
import java.io.Serializable;
import java.util.Locale;
+import org.jooq.Constants;
import org.jooq.meta.Database;
import org.jooq.meta.jaxb.GeneratedAnnotationType;
import org.jooq.meta.jaxb.GeneratedSerialVersionUID;
@@ -487,6 +488,20 @@ public interface Generator {
*/
void setGenerateDaos(boolean generateDaos);
+ /**
+ * Whether generated objects should reference the runtime jOOQ version in
+ * {@link Constants}, to help debug code generator / runtime version
+ * mismatches.
+ */
+ boolean generateJooqVersionReference();
+
+ /**
+ * Whether generated objects should reference the runtime jOOQ version in
+ * {@link Constants}, to help debug code generator / runtime version
+ * mismatches.
+ */
+ void setGenerateJooqVersionReference(boolean generateJooqVersionReference);
+
/**
* Whether POJO's and records should be annotated with JPA annotations
*/
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 9132151e35..ce0fd7dc43 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java
@@ -6751,6 +6751,21 @@ public class JavaGenerator extends AbstractGenerator {
printReferences(out, schemas, Schema.class, false);
+ if (generateJooqVersionReference()) {
+ String version = org.jooq.codegen.Constants.MINOR_VERSION.replace(".", "_");
+
+ out.javadoc("A reference to the " + org.jooq.codegen.Constants.MINOR_VERSION + " minor release of the code generator. "
+ + "If this doesn't compile, it's because the runtime library uses an older minor release, namely: " + org.jooq.Constants.MINOR_VERSION + ". "
+ + "You can turn off the generation of this reference by specifying /configuration/generator/generate/jooqVersionReference");
+
+ if (scala)
+ out.println("private val REQUIRE_RUNTIME_JOOQ_VERSION = %s.VERSION_%s", org.jooq.Constants.class, version);
+ else if (kotlin)
+ out.println("private val REQUIRE_RUNTIME_JOOQ_VERSION = %s.VERSION_%s", org.jooq.Constants.class, version);
+ else
+ out.println("private static final String REQUIRE_RUNTIME_JOOQ_VERSION = %s.VERSION_%s;", org.jooq.Constants.class, version);
+ }
+
generateCatalogClassFooter(catalog, out);
out.println("}");
}
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java b/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java
index f76a6b8c94..e33b41e13d 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java
@@ -53,7 +53,7 @@ public final class Constants {
/**
* The latest jOOQ minor version.
*/
- public static final String MINOR_VERSION = "3.15";
+ public static final String MINOR_VERSION = "3.16";
/**
* The latest jOOQ version.
@@ -155,6 +155,16 @@ public final class Constants {
+ /**
+ * The minor release 3.15.
+ */
+ public static final String VERSION_3_15 = "3.15";
+
+ /**
+ * The minor release 3.16.
+ */
+ public static final String VERSION_3_16 = "3.16";
+
/**
* No further instances
*/
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 65b74b866e..5921816617 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
@@ -114,6 +114,8 @@ public class Generate implements Serializable, XMLAppendable
protected Boolean serializableInterfaces = true;
@XmlElement(defaultValue = "false")
protected Boolean daos = false;
+ @XmlElement(defaultValue = "true")
+ protected Boolean jooqVersionReference = true;
@XmlElement(defaultValue = "false")
protected Boolean jpaAnnotations = false;
@XmlJavaTypeAdapter(StringAdapter.class)
@@ -1174,6 +1176,30 @@ public class Generate implements Serializable, XMLAppendable
this.daos = value;
}
+ /**
+ * Generate references to the most up to date minor release in {@link org.jooq.Constants} to produce compilation errors if an outdated runtime library is being used.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isJooqVersionReference() {
+ return jooqVersionReference;
+ }
+
+ /**
+ * Sets the value of the jooqVersionReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setJooqVersionReference(Boolean value) {
+ this.jooqVersionReference = value;
+ }
+
/**
* Annotate POJOs and Records with JPA annotations.
*
@@ -2498,6 +2524,11 @@ public class Generate implements Serializable, XMLAppendable
return this;
}
+ public Generate withJooqVersionReference(Boolean value) {
+ setJooqVersionReference(value);
+ return this;
+ }
+
public Generate withJpaAnnotations(Boolean value) {
setJpaAnnotations(value);
return this;
@@ -2808,6 +2839,7 @@ public class Generate implements Serializable, XMLAppendable
builder.append("immutableInterfaces", immutableInterfaces);
builder.append("serializableInterfaces", serializableInterfaces);
builder.append("daos", daos);
+ builder.append("jooqVersionReference", jooqVersionReference);
builder.append("jpaAnnotations", jpaAnnotations);
builder.append("jpaVersion", jpaVersion);
builder.append("validationAnnotations", validationAnnotations);
@@ -3245,6 +3277,15 @@ public class Generate implements Serializable, XMLAppendable
return false;
}
}
+ if (jooqVersionReference == null) {
+ if (other.jooqVersionReference!= null) {
+ return false;
+ }
+ } else {
+ if (!jooqVersionReference.equals(other.jooqVersionReference)) {
+ return false;
+ }
+ }
if (jpaAnnotations == null) {
if (other.jpaAnnotations!= null) {
return false;
@@ -3716,6 +3757,7 @@ public class Generate implements Serializable, XMLAppendable
result = ((prime*result)+((immutableInterfaces == null)? 0 :immutableInterfaces.hashCode()));
result = ((prime*result)+((serializableInterfaces == null)? 0 :serializableInterfaces.hashCode()));
result = ((prime*result)+((daos == null)? 0 :daos.hashCode()));
+ result = ((prime*result)+((jooqVersionReference == null)? 0 :jooqVersionReference.hashCode()));
result = ((prime*result)+((jpaAnnotations == null)? 0 :jpaAnnotations.hashCode()));
result = ((prime*result)+((jpaVersion == null)? 0 :jpaVersion.hashCode()));
result = ((prime*result)+((validationAnnotations == null)? 0 :validationAnnotations.hashCode()));
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.16.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.16.0.xsd
index 3fc39d85a3..adbbf602b0 100644
--- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.16.0.xsd
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.16.0.xsd
@@ -1738,6 +1738,10 @@ jOOQ version used for source code.]]>
+
+
+
+
diff --git a/jOOQ/src/main/java/org/jooq/Constants.java b/jOOQ/src/main/java/org/jooq/Constants.java
index adf3d89efb..79d65d91c4 100644
--- a/jOOQ/src/main/java/org/jooq/Constants.java
+++ b/jOOQ/src/main/java/org/jooq/Constants.java
@@ -53,7 +53,7 @@ public final class Constants {
/**
* The latest jOOQ minor version.
*/
- public static final String MINOR_VERSION = "3.15";
+ public static final String MINOR_VERSION = "3.16";
/**
* The latest jOOQ version.
@@ -155,6 +155,16 @@ public final class Constants {
+ /**
+ * The minor release 3.15.
+ */
+ public static final String VERSION_3_15 = "3.15";
+
+ /**
+ * The minor release 3.16.
+ */
+ public static final String VERSION_3_16 = "3.16";
+
/**
* No further instances
*/