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