[jOOQ/jOOQ#252] Generate deepHashCode as well
This commit is contained in:
parent
491f9a3aad
commit
b9ef00717e
@ -5620,7 +5620,9 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
out.println("return false");
|
||||
out.println("}");
|
||||
|
||||
if (isArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
if (isObjectArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
out.println("else if (!%s.deepEquals(this.%s, o.%s))", Arrays.class, columnMember, columnMember);
|
||||
else if (isArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
out.println("else if (!%s.equals(this.%s, o.%s))", Arrays.class, columnMember, columnMember);
|
||||
else
|
||||
out.println("else if (this.%s != o.%s)", columnMember, columnMember);
|
||||
@ -5651,7 +5653,9 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
out.println("return false;");
|
||||
out.println("}");
|
||||
|
||||
if (isArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
if (isObjectArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
out.println("else if (!%s.deepEquals(this.%s, other.%s))", Arrays.class, columnMember, columnMember);
|
||||
else if (isArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
out.println("else if (!%s.equals(this.%s, other.%s))", Arrays.class, columnMember, columnMember);
|
||||
else
|
||||
out.println("else if (!this.%s.equals(other.%s))", columnMember, columnMember);
|
||||
@ -5690,7 +5694,9 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT)) {
|
||||
final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO);
|
||||
|
||||
if (isArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
if (isObjectArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
out.println("result = prime * result + (if (this.%s === null) 0 else %s.deepHashCode(this.%s))", columnMember, Arrays.class, columnMember);
|
||||
else 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);
|
||||
@ -5708,7 +5714,9 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT)) {
|
||||
final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO);
|
||||
|
||||
if (isArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
if (isObjectArrayType(getJavaType(column.getType(resolver(out)), out)))
|
||||
out.println("result = prime * result + ((this.%s == null) ? 0 : %s.deepHashCode(this.%s));", columnMember, Arrays.class, columnMember);
|
||||
else 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);
|
||||
@ -9283,6 +9291,15 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
return new Resolver(out, mode);
|
||||
}
|
||||
|
||||
protected boolean isObjectArrayType(String javaType) {
|
||||
if (scala)
|
||||
return javaType.startsWith("scala.Array");
|
||||
else if (kotlin)
|
||||
return javaType.startsWith("kotlin.Array");
|
||||
else
|
||||
return javaType.endsWith("[]") && !javaType.equals("byte[]");
|
||||
}
|
||||
|
||||
protected boolean isArrayType(String javaType) {
|
||||
if (scala)
|
||||
return javaType.startsWith("scala.Array");
|
||||
@ -9293,10 +9310,15 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
}
|
||||
|
||||
protected String getArrayBaseType(String javaType) {
|
||||
return javaType
|
||||
String result = javaType
|
||||
.replace("[]", "")
|
||||
.replaceAll("^scala.Array\\[(.*?)\\]$", "$1")
|
||||
.replaceAll("^kotlin.Array<(.*?)\\??>$", "$1");
|
||||
|
||||
if (result.equals(javaType))
|
||||
return result;
|
||||
else
|
||||
return getArrayBaseType(result);
|
||||
}
|
||||
|
||||
protected String getJavaType(DataTypeDefinition type, JavaWriter out) {
|
||||
|
||||
@ -323,7 +323,7 @@ public class JavaWriter extends GeneratorWriter<JavaWriter> {
|
||||
return result;
|
||||
}
|
||||
|
||||
private static final Pattern KOTLIN_ARRAY_PATTERN = Pattern.compile("kotlin.Array<([^?>]*)\\?>");
|
||||
private static final Pattern KOTLIN_ARRAY_PATTERN = Pattern.compile("kotlin.Array<(.*)\\?>");
|
||||
|
||||
private String patchKotlinClasses(String c) {
|
||||
// [#10768] TODO: Is this the right place to patch these classes?
|
||||
|
||||
@ -163,7 +163,7 @@ abstract class AbstractStore extends AbstractFormattable {
|
||||
// Other primitive types are not expected
|
||||
else if (!thisValue.getClass().getComponentType().isPrimitive() &&
|
||||
!thatValue.getClass().getComponentType().isPrimitive()) {
|
||||
if (!Arrays.equals((Object[]) thisValue, (Object[]) thatValue))
|
||||
if (!Arrays.deepEquals((Object[]) thisValue, (Object[]) thatValue))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user