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; + } +}