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 12b8f687e9..0d7bd8ecd9 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -4680,8 +4680,8 @@ public class JavaGenerator extends AbstractGenerator { out.println("return false"); out.println("}"); - if (getJavaType(column.getType(resolver(out)), out).endsWith("[]")) - out.println("else if (!%s.equals(%s, other.%s))", Arrays.class, columnMember, columnMember); + if (isArrayType(getJavaType(column.getType(resolver(out)), out))) + out.println("else if (!(%s sameElements other.%s))", columnMember, columnMember); else out.println("else if (!%s.equals(other.%s))", columnMember, columnMember); @@ -4710,7 +4710,7 @@ public class JavaGenerator extends AbstractGenerator { out.println("return false"); out.println("}"); - if (getJavaType(column.getType(resolver(out)), out).endsWith("[]")) + if (isArrayType(getJavaType(column.getType(resolver(out)), out))) out.println("else if (!%s.equals(%s, other.%s))", Arrays.class, columnMember, columnMember); else out.println("else if (%s != other.%s)", columnMember, columnMember); @@ -4741,7 +4741,7 @@ public class JavaGenerator extends AbstractGenerator { out.println("return false;"); out.println("}"); - if (getJavaType(column.getType(resolver(out)), out).endsWith("[]")) + if (isArrayType(getJavaType(column.getType(resolver(out)), out))) out.println("else if (!%s.equals(%s, other.%s))", Arrays.class, columnMember, columnMember); else out.println("else if (!%s.equals(other.%s))", columnMember, columnMember); @@ -4763,10 +4763,10 @@ public class JavaGenerator extends AbstractGenerator { for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO); - if (getJavaType(column.getType(resolver(out)), out).endsWith("[]")) - out.println("result = prime * result + (if (this.%s == null) 0 else %s.hashCode(this.%s))", columnMember, Arrays.class, columnMember); + if (isArrayType(getJavaType(column.getType(resolver(out)), out))) + out.println("result = prime * result + (if (this.%s == null) 0 else %s.toSeq.hashCode)", columnMember, columnMember); else - out.println("result = prime * result + (if (this.%s == null) 0 else this.%s.hashCode())", columnMember, columnMember); + out.println("result = prime * result + (if (this.%s == null) 0 else this.%s.hashCode)", columnMember, columnMember); } out.println("return result"); @@ -4780,7 +4780,7 @@ public class JavaGenerator extends AbstractGenerator { for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO); - if (getJavaType(column.getType(resolver(out)), out).endsWith("[]")) + if (isArrayType(getJavaType(column.getType(resolver(out)), out))) out.println("result = prime * result + (if (this.%s === null) 0 else %s.hashCode(this.%s))", columnMember, Arrays.class, columnMember); else out.println("result = prime * result + (if (this.%s === null) 0 else this.%s.hashCode())", columnMember, columnMember); @@ -4798,7 +4798,7 @@ public class JavaGenerator extends AbstractGenerator { for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO); - if (getJavaType(column.getType(resolver(out)), out).endsWith("[]")) + if (isArrayType(getJavaType(column.getType(resolver(out)), out))) out.println("result = prime * result + ((this.%s == null) ? 0 : %s.hashCode(this.%s));", columnMember, Arrays.class, columnMember); else out.println("result = prime * result + ((this.%s == null) ? 0 : this.%s.hashCode());", columnMember, columnMember); @@ -4855,7 +4855,7 @@ public class JavaGenerator extends AbstractGenerator { for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO); final String columnType = getJavaType(column.getType(resolver(out)), out); - final boolean array = columnType.endsWith("[]"); + final boolean array = isArrayType(columnType); if (array && columnType.equals("kotlin.ByteArray")) out.println("sb%s.append(\"[binary...]\")", separator); @@ -4882,7 +4882,7 @@ public class JavaGenerator extends AbstractGenerator { for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO); final String columnType = getJavaType(column.getType(resolver(out)), out); - final boolean array = columnType.endsWith("[]"); + final boolean array = isArrayType(columnType); if (array && columnType.equals("byte[]")) out.println("sb%s.append(\"[binary...]\");", separator); @@ -8067,6 +8067,10 @@ public class JavaGenerator extends AbstractGenerator { return new Resolver(out, mode); } + protected boolean isArrayType(String javaType) { + return javaType.endsWith("[]") || javaType.startsWith("kotlin.Array") || javaType.startsWith("scala.Array"); + } + protected String getJavaType(DataTypeDefinition type, JavaWriter out) { return getJavaType(type, out, Mode.RECORD); }