- Renamed XSD property to indicate that this applies only to POJOs - Correctly handle arrays in hashCode() calculations
This commit is contained in:
parent
ff67579f2e
commit
ccb0daadd7
@ -57,6 +57,7 @@ abstract class AbstractGenerator implements Generator {
|
||||
boolean useSchemaVersionProvider = false;
|
||||
boolean generateRecords = true;
|
||||
boolean generatePojos = false;
|
||||
boolean generatePojosEqualsAndHashCode = false;
|
||||
boolean generateImmutablePojos = false;
|
||||
boolean generateInterfaces = false;
|
||||
boolean generateDaos = false;
|
||||
@ -64,7 +65,6 @@ abstract class AbstractGenerator implements Generator {
|
||||
boolean generateValidationAnnotations = false;
|
||||
boolean generateGlobalObjectReferences = true;
|
||||
boolean fluentSetters = false;
|
||||
boolean generateEqualsAndHashCode = false;
|
||||
|
||||
protected GeneratorStrategyWrapper strategy;
|
||||
|
||||
@ -228,13 +228,13 @@ abstract class AbstractGenerator implements Generator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateEqualsAndHashCode() {
|
||||
return generateEqualsAndHashCode;
|
||||
public boolean generatePojosEqualsAndHashCode() {
|
||||
return generatePojosEqualsAndHashCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateEqualsAndHashCode(boolean generateEqualsAndHashCode) {
|
||||
this.generateEqualsAndHashCode = generateEqualsAndHashCode;
|
||||
public void setGeneratePojosEqualsAndHashCode(boolean generatePojosEqualsAndHashCode) {
|
||||
this.generatePojosEqualsAndHashCode = generatePojosEqualsAndHashCode;
|
||||
}
|
||||
|
||||
// ----
|
||||
|
||||
@ -397,8 +397,8 @@ public class GenerationTool {
|
||||
generator.setGenerateGlobalObjectReferences(g.getGenerate().isGlobalObjectReferences());
|
||||
if (g.getGenerate().isFluentSetters() != null)
|
||||
generator.setFluentSetters(g.getGenerate().isFluentSetters());
|
||||
if (g.getGenerate().isGenerateEqualsAndHashCode() != null)
|
||||
generator.setGenerateEqualsAndHashCode(g.getGenerate().isGenerateEqualsAndHashCode());
|
||||
if (g.getGenerate().isPojosEqualsAndHashCode() != null)
|
||||
generator.setGeneratePojosEqualsAndHashCode(g.getGenerate().isPojosEqualsAndHashCode());
|
||||
|
||||
if (!StringUtils.isBlank(g.getDatabase().getSchemaVersionProvider()))
|
||||
generator.setUseSchemaVersionProvider(true);
|
||||
|
||||
@ -203,14 +203,14 @@ public interface Generator {
|
||||
void setFluentSetters(boolean fluentSetters);
|
||||
|
||||
/**
|
||||
* Whether equals and hashCode methods should be generated
|
||||
* Whether equals and hashCode methods should be generated on POJOs
|
||||
*/
|
||||
boolean generateEqualsAndHashCode();
|
||||
boolean generatePojosEqualsAndHashCode();
|
||||
|
||||
/**
|
||||
* Whether equals and hashCode methods should be generated
|
||||
* Whether equals and hashCode methods should be generated on POJOs
|
||||
*/
|
||||
void setGenerateEqualsAndHashCode(boolean generateEqualsAndHashCode);
|
||||
void setGeneratePojosEqualsAndHashCode(boolean generatePojosEqualsAndHashCode);
|
||||
|
||||
/**
|
||||
* The target directory
|
||||
|
||||
@ -1895,7 +1895,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
}
|
||||
|
||||
// equals
|
||||
if (generateEqualsAndHashCode()) {
|
||||
if (generatePojosEqualsAndHashCode()) {
|
||||
out.println();
|
||||
out.tab(1).println("@Override");
|
||||
out.tab(1).println("public boolean equals(Object obj) {");
|
||||
@ -1918,7 +1918,8 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
|
||||
if (getJavaType(column.getType()).endsWith("[]")) {
|
||||
out.tab(2).println("else if (!java.util.Arrays.equals(%s, other.%s))", columnMember, columnMember);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
out.tab(2).println("else if (!%s.equals(other.%s))", columnMember, columnMember);
|
||||
}
|
||||
|
||||
@ -1930,7 +1931,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
}
|
||||
|
||||
// hashCode
|
||||
if (generateEqualsAndHashCode()) {
|
||||
if (generatePojosEqualsAndHashCode()) {
|
||||
out.println();
|
||||
out.tab(1).println("@Override");
|
||||
out.tab(1).println("public int hashCode() {");
|
||||
@ -1940,8 +1941,12 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
for (TypedElementDefinition<?> column : getTypedElements(tableOrUDT)) {
|
||||
final String columnMember = getStrategy().getJavaMemberName(column, Mode.POJO);
|
||||
|
||||
out.tab(2).println("result = prime * result + ((%s == null) ? 0 : %s.hashCode());",
|
||||
columnMember, columnMember);
|
||||
if (getJavaType(column.getType()).endsWith("[]")) {
|
||||
out.tab(2).println("result = prime * result + ((%s == null) ? 0 : java.util.Arrays.hashCode(%s));", columnMember, columnMember);
|
||||
}
|
||||
else {
|
||||
out.tab(2).println("result = prime * result + ((%s == null) ? 0 : %s.hashCode());", columnMember, columnMember);
|
||||
}
|
||||
}
|
||||
|
||||
out.tab(2).println("return result;");
|
||||
|
||||
@ -633,6 +633,11 @@
|
||||
Generate POJOs for usage of the ResultQuery.fetchInto(Class) API
|
||||
-->
|
||||
<element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate basic equals() and hashCode() methods in POJOs
|
||||
-->
|
||||
<element name="pojosEqualsAndHashCode" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
|
||||
@ -688,11 +693,6 @@
|
||||
useful to those users who do not depend on EL, JSP, JSF, etc.
|
||||
-->
|
||||
<element name="fluentSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate basic equals() and hashCode() methods in POJOs
|
||||
-->
|
||||
<element name="generateEqualsAndHashCode" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user