diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java index 62d1c2c7ab..ca0a544fd0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java @@ -268,8 +268,14 @@ final class QualifiedName extends AbstractName { if (hash == null) { int h = 1; - for (int i = 0; i < qualifiedName.length; i++) - h = 31 * h + qualifiedName[i].name.hashCode(); + for (int i = 0; i < qualifiedName.length; i++) { + UnqualifiedName n = qualifiedName[i]; + + if (n.name == null) + h = 31 * h + 0; + else + h = 31 * h + n.name.hashCode(); + } hash = h; } diff --git a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java index 97ea82aee0..c2cf8b31a8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java @@ -172,6 +172,9 @@ final class UnqualifiedName extends AbstractName { // [#13499] Since QualifiedName and UnqualifiedName can be equal, both // need the same hashCode() computation - return 31 * 1 + name.hashCode(); + if (name == null) + return 0; + else + return 31 * 1 + name.hashCode(); } }