From 3eda7e9e669916d2680446de99ad0427f12ad2a6 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Sun, 12 Nov 2023 11:02:46 +0100 Subject: [PATCH] Revert "AbstractPersistentProperty now considers the owner for equals." This reverts commit 633d125f1d2563e8cc8bbce9da08a6a3a715291a. The change caused build failures for Spring Data JDBC. See #2972 Original pull request #2973 See spring-projects/spring-data-relational#1657 --- .../model/AbstractPersistentProperty.java | 6 +-- .../AbstractPersistentPropertyUnitTests.java | 38 ++++++++----------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java b/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java index 38ad85e46..6cfd42db5 100644 --- a/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java +++ b/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java @@ -20,7 +20,6 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Collections; import java.util.HashSet; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -42,7 +41,6 @@ import org.springframework.util.Assert; * @author Oliver Gierke * @author Christoph Strobl * @author Mark Paluch - * @author Jens Schauder */ public abstract class AbstractPersistentProperty

> implements PersistentProperty

{ @@ -89,7 +87,7 @@ public abstract class AbstractPersistentProperty

this.association = Lazy.of(() -> isAssociation() ? createAssociation() : null); this.owner = owner; - this.hashCode = Lazy.of(() -> Objects.hash(property, owner)); + this.hashCode = Lazy.of(property::hashCode); this.usePropertyAccess = Lazy.of(() -> owner.getType().isInterface() || CAUSE_FIELD.equals(getField())); this.isAssociation = Lazy.of(() -> ASSOCIATION_TYPE != null && ASSOCIATION_TYPE.isAssignableFrom(rawType)); @@ -319,7 +317,7 @@ public abstract class AbstractPersistentProperty

return false; } - return this.property.equals(that.property) && this.owner.equals(that.owner); + return this.property.equals(that.property); } @Override diff --git a/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java b/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java index 13be98a56..a15e63513 100755 --- a/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java @@ -81,6 +81,16 @@ public class AbstractPersistentPropertyUnitTests { assertThat(getProperty(TestClassComplex.class, "collection").isEntity()).isFalse(); } + @Test // DATACMNS-121 + void considersPropertiesEqualIfFieldEquals() { + + var firstProperty = getProperty(FirstConcrete.class, "genericField"); + var secondProperty = getProperty(SecondConcrete.class, "genericField"); + + assertThat(firstProperty).isEqualTo(secondProperty); + assertThat(firstProperty.hashCode()).isEqualTo(secondProperty.hashCode()); + } + @Test // DATACMNS-180 void doesNotConsiderJavaTransientFieldsTransient() { assertThat(getProperty(TestClassComplex.class, "transientField").isTransient()).isFalse(); @@ -197,7 +207,7 @@ public class AbstractPersistentPropertyUnitTests { @Test // DATACMNS-1139 void resolvesGenericsForRawType() { - var property = getProperty(Concrete.class, "genericField"); + var property = getProperty(FirstConcrete.class, "genericField"); assertThat(property.getRawType()).isEqualTo(String.class); } @@ -230,15 +240,6 @@ public class AbstractPersistentPropertyUnitTests { assertThat(property.isMap()).isTrue(); } - @Test // GH-2972 - void equalsConsidersOwner() { - - SamplePersistentProperty id1 = getProperty(Inherited1.class, "id"); - SamplePersistentProperty id2 = getProperty(Inherited2.class, "id"); - - assertThat(id1).isNotEqualTo(id2); - } - private BasicPersistentEntity getEntity(Class type) { return new BasicPersistentEntity<>(TypeInformation.of(type)); } @@ -276,7 +277,11 @@ public class AbstractPersistentPropertyUnitTests { } - class Concrete extends Generic { + class FirstConcrete extends Generic { + + } + + class SecondConcrete extends Generic { } @@ -407,15 +412,4 @@ public class AbstractPersistentPropertyUnitTests { class VavrWrapper { io.vavr.collection.Map vavrMap; } - - class Base { - Long id; - } - - class Inherited1 extends Base { - } - - class Inherited2 extends Base { - } - }