From f40c9e13c999fb0b55e6559ba5e549454666c062 Mon Sep 17 00:00:00 2001 From: mhyeon-lee Date: Fri, 4 Oct 2019 14:36:54 +0900 Subject: [PATCH] DATAJDBC-427 - IdOnlyAggregateReference no supports equality. Original pull request: #172. --- .../jdbc/core/mapping/AggregateReference.java | 5 +++ .../mapping/IdOnlyAggregateReferenceTest.java | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/mapping/IdOnlyAggregateReferenceTest.java diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/AggregateReference.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/AggregateReference.java index 2c29052c..6acaabd9 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/AggregateReference.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/mapping/AggregateReference.java @@ -15,7 +15,9 @@ */ package org.springframework.data.jdbc.core.mapping; +import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; +import lombok.ToString; import org.springframework.lang.Nullable; @@ -25,6 +27,7 @@ import org.springframework.lang.Nullable; * @param the type of the referenced aggregate root. * @param the type of the id of the referenced aggregate root. * @author Jens Schauder + * @author Myeonghyeon Lee * @since 1.0 */ public interface AggregateReference { @@ -47,6 +50,8 @@ public interface AggregateReference { * @param */ @RequiredArgsConstructor + @EqualsAndHashCode + @ToString class IdOnlyAggregateReference implements AggregateReference { private final ID id; diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/mapping/IdOnlyAggregateReferenceTest.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/mapping/IdOnlyAggregateReferenceTest.java new file mode 100644 index 00000000..790b97cf --- /dev/null +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/mapping/IdOnlyAggregateReferenceTest.java @@ -0,0 +1,40 @@ +package org.springframework.data.jdbc.core.mapping; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.Test; +import org.springframework.data.jdbc.core.mapping.AggregateReference.IdOnlyAggregateReference; + +/** + * Unit tests for the {@link IdOnlyAggregateReference}. + * + * @author Myeonghyeon Lee + */ +public class IdOnlyAggregateReferenceTest { + @Test // DATAJDBC-427 + public void equals() { + AggregateReference reference1 = AggregateReference.to("1"); + AggregateReference reference2 = AggregateReference.to("1"); + assertThat(reference1.equals(reference2)).isTrue(); + assertThat(reference2.equals(reference1)).isTrue(); + } + + @Test // DATAJDBC-427 + public void equalsFalse() { + AggregateReference reference1 = AggregateReference.to("1"); + AggregateReference reference2 = AggregateReference.to("2"); + assertThat(reference1.equals(reference2)).isFalse(); + assertThat(reference2.equals(reference1)).isFalse(); + } + + @Test // DATAJDBC-427 + public void hashCodeTest() { + AggregateReference reference1 = AggregateReference.to("1"); + AggregateReference reference2 = AggregateReference.to("1"); + assertThat(reference1.hashCode()).isEqualTo(reference2.hashCode()); + } + + private static class DummyEntity { + private String id; + } +}