diff --git a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index 6c072635c..c39bf4dcc 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -178,12 +178,8 @@ public abstract class AbstractMappingContext typeInfo = persistentProperty.getTypeInformation(); + return getPersistentEntity(typeInfo.getActualType()); } /* 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 8df1ba693..d783f8845 100644 --- a/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java @@ -21,6 +21,7 @@ import static org.mockito.Mockito.*; import groovy.lang.MetaClass; import java.util.Collections; +import java.util.List; import org.junit.Before; import org.junit.Test; @@ -144,7 +145,7 @@ public class AbstractMappingContextUnitTests { } /** - * @see DATACMNS-??? + * @see DATACMNS-332 */ @Test public void usesMostConcreteProperty() { @@ -154,6 +155,22 @@ public class AbstractMappingContextUnitTests { assertThat(entity.getPersistentProperty("foo").isIdProperty(), is(true)); } + /** + * @see DATACMNS-345 + */ + @Test + @SuppressWarnings("rawtypes") + public void returnsEntityForComponentType() { + + SampleMappingContext mappingContext = new SampleMappingContext(); + PersistentEntity entity = mappingContext.getPersistentEntity(Sample.class); + SamplePersistentProperty property = entity.getPersistentProperty("persons"); + PersistentEntity propertyEntity = mappingContext.getPersistentEntity(property); + + assertThat(propertyEntity, is(notNullValue())); + assertThat(propertyEntity.getType(), is(equalTo((Class) Person.class))); + } + class Person { String name; } @@ -165,6 +182,7 @@ public class AbstractMappingContextUnitTests { class Sample { MetaClass metaClass; + List persons; } static class Base { @@ -172,7 +190,6 @@ public class AbstractMappingContextUnitTests { } static class Extension extends Base { - @Id - String foo; + @Id String foo; } }