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 c9e41dd0e..badc42ab2 100644 --- a/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java +++ b/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java @@ -54,6 +54,8 @@ import org.springframework.util.StringUtils; */ public class BasicPersistentEntity> implements MutablePersistentEntity { + private static final String TYPE_MISMATCH = "Target bean of type %s is not of type of the persistent entity (%s)!"; + private final PreferredConstructor constructor; private final TypeInformation information; private final List

properties; @@ -391,7 +393,9 @@ public class BasicPersistentEntity> implement public PersistentPropertyAccessor getPropertyAccessor(Object bean) { Assert.notNull(bean, "Target bean must not be null!"); - Assert.isTrue(getType().isInstance(bean), "Target bean is not of type of the persistent entity!"); + + Assert.isTrue(getType().isInstance(bean), + String.format(TYPE_MISMATCH, bean.getClass().getName(), getType().getName())); return new BeanWrapper(bean); } diff --git a/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java b/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java index 6e2031f7f..99600b7a5 100644 --- a/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java @@ -238,6 +238,20 @@ public class BasicPersistentEntityUnitTests> { assertThat(entity.getTypeAlias(), is((Object) "bar")); } + /** + * @see DATACMNS-866 + */ + @Test + public void invalidBeanAccessCreatesDescriptiveErrorMessage() { + + PersistentEntity entity = createEntity(Entity.class); + + exception.expectMessage(Entity.class.getName()); + exception.expectMessage(Object.class.getName()); + + entity.getPropertyAccessor(new Object()); + } + private BasicPersistentEntity createEntity(Class type) { return createEntity(type, null); }