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 e500cc79e..d05ab08db 100644 --- a/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java +++ b/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java @@ -316,6 +316,6 @@ public abstract class AbstractPersistentProperty

*/ @Override public String toString() { - return String.format("%s.%s : %s", getOwner().getType().getName(), getName(), getType().getName()); + return this.field.toString(); } } diff --git a/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java b/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java index 83f13d81a..8afd01a61 100644 --- a/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java +++ b/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java @@ -161,7 +161,10 @@ public class BasicPersistentEntity> implement Assert.notNull(property); properties.add(property); - propertyCache.put(property.getName(), property); + + if (!propertyCache.containsKey(property.getName())) { + propertyCache.put(property.getName(), property); + } if (property.isIdProperty()) { diff --git a/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java b/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java index 31d7fe255..8df1ba693 100644 --- a/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java @@ -27,6 +27,7 @@ import org.junit.Test; import org.mockito.Mockito; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEvent; +import org.springframework.data.annotation.Id; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PropertyPath; import org.springframework.data.mapping.model.BasicPersistentEntity; @@ -142,6 +143,17 @@ public class AbstractMappingContextUnitTests { assertThat(entity.getPersistentProperty("metaClass"), is(nullValue())); } + /** + * @see DATACMNS-??? + */ + @Test + public void usesMostConcreteProperty() { + + SampleMappingContext mappingContext = new SampleMappingContext(); + PersistentEntity entity = mappingContext.getPersistentEntity(Extension.class); + assertThat(entity.getPersistentProperty("foo").isIdProperty(), is(true)); + } + class Person { String name; } @@ -154,4 +166,13 @@ public class AbstractMappingContextUnitTests { MetaClass metaClass; } + + static class Base { + String foo; + } + + static class Extension extends Base { + @Id + String foo; + } }