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 f8d8a6146a..d3745da85d 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
@@ -56,7 +56,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -2146,7 +2145,7 @@ public class JavaGenerator extends AbstractGenerator {
if (scala) {
out.tab(1).println("def fetchBy%s(values : %s*) : %s[%s] = {", colClass, colType, List.class, pType);
- out.tab(2).println("fetch(%s, values)", colIdentifier);
+ out.tab(2).println("fetch(%s, values:_*)", colIdentifier);
out.tab(1).println("}");
}
else {
@@ -2165,7 +2164,7 @@ public class JavaGenerator extends AbstractGenerator {
out.tab(1).javadoc("Fetch a unique record that has %s = value", colName);
if (scala) {
- out.tab(1).println("def fetchOneBy%s(value : %s) : %s = {", colClass, pType, colType);
+ out.tab(1).println("def fetchOneBy%s(value : %s) : %s = {", colClass, colType, pType);
out.tab(2).println("fetchOne(%s, value)", colIdentifier);
out.tab(1).println("}");
}
@@ -2285,8 +2284,8 @@ public class JavaGenerator extends AbstractGenerator {
for (TypedElementDefinition> column : getTypedElements(tableOrUDT)) {
out.tab(1).println("private %s%s %s;",
generateImmutablePojos() ? "final " : "",
- StringUtils.rightPad(out.ref(getJavaType(column.getType(), Mode.POJO)), maxLength),
- getStrategy().getJavaMemberName(column, Mode.POJO));
+ StringUtils.rightPad(out.ref(getJavaType(column.getType(), Mode.POJO)), maxLength),
+ getStrategy().getJavaMemberName(column, Mode.POJO));
}
}
@@ -2298,9 +2297,24 @@ public class JavaGenerator extends AbstractGenerator {
out.println();
if (scala) {
- out.tab(1).println("def this() = {", className);
- out.tab(2).println("this([[%s]])", Collections.nCopies(getTypedElements(tableOrUDT).size(), "null"));
- out.tab(1).println("}");
+
+ // [#3010] Invalid UDTs may have no attributes. Avoid generating this constructor in that case
+ int size = getTypedElements(tableOrUDT).size();
+ if (size > 0) {
+ List nulls = new ArrayList();
+ for (TypedElementDefinition> column : getTypedElements(tableOrUDT))
+
+ // Avoid ambiguities between a single-T-value constructor
+ // and the copy constructor
+ if (size == 1)
+ nulls.add("null : " + out.ref(getJavaType(column.getType(), Mode.POJO)));
+ else
+ nulls.add("null");
+
+ out.tab(1).println("def this() = {", className);
+ out.tab(2).println("this([[%s]])", nulls);
+ out.tab(1).println("}");
+ }
}
else {
out.tab(1).println("public %s() {}", className);
@@ -2347,7 +2361,7 @@ public class JavaGenerator extends AbstractGenerator {
// [#3010] Invalid UDTs may have no attributes. Avoid generating this constructor in that case
// [#3176] Avoid generating constructors for tables with more than 255 columns (Java's method argument limit)
else if (getTypedElements(tableOrUDT).size() > 0 &&
- getTypedElements(tableOrUDT).size() < 256) {
+ getTypedElements(tableOrUDT).size() < 256) {
out.println();
out.tab(1).print("public %s(", className);