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 61c00688b..79e259989 100644 --- a/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java +++ b/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java @@ -53,6 +53,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 6d879be6a..194ff54b2 100644 --- a/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/model/BasicPersistentEntityUnitTests.java @@ -224,6 +224,20 @@ public class BasicPersistentEntityUnitTests> { assertThat(entity.getPropertyAccessor(new Subtype()), is(notNullValue())); } + /** + * @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); }