Skip to content

Commit 3eda7e9

Browse files
committed
Revert "AbstractPersistentProperty now considers the owner for equals."
This reverts commit 633d125. The change caused build failures for Spring Data JDBC. See #2972 Original pull request #2973 See spring-projects/spring-data-relational#1657
1 parent 42badf2 commit 3eda7e9

File tree

2 files changed

+18
-26
lines changed

2 files changed

+18
-26
lines changed

src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.lang.reflect.Modifier;
2121
import java.util.Collections;
2222
import java.util.HashSet;
23-
import java.util.Objects;
2423
import java.util.Optional;
2524
import java.util.Set;
2625
import java.util.stream.Collectors;
@@ -42,7 +41,6 @@
4241
* @author Oliver Gierke
4342
* @author Christoph Strobl
4443
* @author Mark Paluch
45-
* @author Jens Schauder
4644
*/
4745
public abstract class AbstractPersistentProperty<P extends PersistentProperty<P>> implements PersistentProperty<P> {
4846

@@ -89,7 +87,7 @@ public AbstractPersistentProperty(Property property, PersistentEntity<?, P> owne
8987
this.association = Lazy.of(() -> isAssociation() ? createAssociation() : null);
9088
this.owner = owner;
9189

92-
this.hashCode = Lazy.of(() -> Objects.hash(property, owner));
90+
this.hashCode = Lazy.of(property::hashCode);
9391
this.usePropertyAccess = Lazy.of(() -> owner.getType().isInterface() || CAUSE_FIELD.equals(getField()));
9492

9593
this.isAssociation = Lazy.of(() -> ASSOCIATION_TYPE != null && ASSOCIATION_TYPE.isAssignableFrom(rawType));
@@ -319,7 +317,7 @@ public boolean equals(@Nullable Object obj) {
319317
return false;
320318
}
321319

322-
return this.property.equals(that.property) && this.owner.equals(that.owner);
320+
return this.property.equals(that.property);
323321
}
324322

325323
@Override

src/test/java/org/springframework/data/mapping/model/AbstractPersistentPropertyUnitTests.java

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ void isEntityWorksForUntypedCollection() {
8181
assertThat(getProperty(TestClassComplex.class, "collection").isEntity()).isFalse();
8282
}
8383

84+
@Test // DATACMNS-121
85+
void considersPropertiesEqualIfFieldEquals() {
86+
87+
var firstProperty = getProperty(FirstConcrete.class, "genericField");
88+
var secondProperty = getProperty(SecondConcrete.class, "genericField");
89+
90+
assertThat(firstProperty).isEqualTo(secondProperty);
91+
assertThat(firstProperty.hashCode()).isEqualTo(secondProperty.hashCode());
92+
}
93+
8494
@Test // DATACMNS-180
8595
void doesNotConsiderJavaTransientFieldsTransient() {
8696
assertThat(getProperty(TestClassComplex.class, "transientField").isTransient()).isFalse();
@@ -197,7 +207,7 @@ void resolvesFieldNameWithUnderscoresCorrectly() {
197207
@Test // DATACMNS-1139
198208
void resolvesGenericsForRawType() {
199209

200-
var property = getProperty(Concrete.class, "genericField");
210+
var property = getProperty(FirstConcrete.class, "genericField");
201211

202212
assertThat(property.getRawType()).isEqualTo(String.class);
203213
}
@@ -230,15 +240,6 @@ void considersVavrMaps() {
230240
assertThat(property.isMap()).isTrue();
231241
}
232242

233-
@Test // GH-2972
234-
void equalsConsidersOwner() {
235-
236-
SamplePersistentProperty id1 = getProperty(Inherited1.class, "id");
237-
SamplePersistentProperty id2 = getProperty(Inherited2.class, "id");
238-
239-
assertThat(id1).isNotEqualTo(id2);
240-
}
241-
242243
private <T> BasicPersistentEntity<T, SamplePersistentProperty> getEntity(Class<T> type) {
243244
return new BasicPersistentEntity<>(TypeInformation.of(type));
244245
}
@@ -276,7 +277,11 @@ class Generic<T> {
276277

277278
}
278279

279-
class Concrete extends Generic<String> {
280+
class FirstConcrete extends Generic<String> {
281+
282+
}
283+
284+
class SecondConcrete extends Generic<Integer> {
280285

281286
}
282287

@@ -407,15 +412,4 @@ interface JMoleculesAggregate extends AggregateRoot<JMoleculesAggregate, Identif
407412
class VavrWrapper {
408413
io.vavr.collection.Map<String, String> vavrMap;
409414
}
410-
411-
class Base {
412-
Long id;
413-
}
414-
415-
class Inherited1 extends Base {
416-
}
417-
418-
class Inherited2 extends Base {
419-
}
420-
421415
}

0 commit comments

Comments
 (0)