diff --git a/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbClassEqualityTest.java b/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbClassEqualityTest.java index 8574355726..56cae1ef7a 100644 --- a/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbClassEqualityTest.java +++ b/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbClassEqualityTest.java @@ -32,7 +32,9 @@ public class DbClassEqualityTest extends DbTestCommons { @Test public void testEntityEquality() { - neq(post(0L), post(0L)); + neq(post(null), post(null)); + neq(post(null), post(123L)); + neq(post(12L), post(null)); eq(post(123L), post(123L)); neq(post(123L), post(547L)); } diff --git a/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbInterfaceEqualityTest.java b/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbInterfaceEqualityTest.java index 05e6e4c77e..6580043b85 100644 --- a/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbInterfaceEqualityTest.java +++ b/rapidoid-x-db-tests/src/test/java/org/rapidoidx/db/DbInterfaceEqualityTest.java @@ -32,12 +32,14 @@ public class DbInterfaceEqualityTest extends DbTestCommons { @Test public void testEntityEquality() { - eq(XDB.entity(IPost.class, "id", 1L), XDB.entity(IPost.class, "id", 1)); + eq(XDB.entity(IPost.class, "id", 12), XDB.entity(IPost.class, "id", "12")); eq(XDB.entity(IPost.class, "id", 123L), XDB.entity(IPost.class, "id", 123)); neq(XDB.entity(IPost.class, "id", 12345L), XDB.entity(IPost.class)); neq(XDB.entity(IPost.class), XDB.entity(IPost.class, "id", 5432)); neq(XDB.entity(IPost.class), XDB.entity(IPost.class)); - neq(XDB.entity(IPost.class, "id", 0L), XDB.entity(IPost.class, "id", 0)); + neq(XDB.entity(IPost.class, "id", null), XDB.entity(IPost.class, "id", null)); + neq(XDB.entity(IPost.class, "id", null), XDB.entity(IPost.class, "id", 12)); + neq(XDB.entity(IPost.class, "id", 123), XDB.entity(IPost.class, "id", null)); } } diff --git a/rapidoid-x-db/src/main/java/org/rapidoidx/db/AbstractRichEntity.java b/rapidoid-x-db/src/main/java/org/rapidoidx/db/AbstractRichEntity.java index db63f589b5..c03154ce49 100644 --- a/rapidoid-x-db/src/main/java/org/rapidoidx/db/AbstractRichEntity.java +++ b/rapidoid-x-db/src/main/java/org/rapidoidx/db/AbstractRichEntity.java @@ -148,15 +148,18 @@ public boolean equals(Object obj) { return true; if (obj == null) return false; - if (getClass() != obj.getClass()) + + if (!(obj instanceof IEntity)) { return false; - AbstractRichEntity other = (AbstractRichEntity) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) + } + + IEntity other = (IEntity) obj; + + if (id == null || other.id() == null) { return false; - return true; + } + + return id.equals(other.id()); } @SuppressWarnings("unchecked")