diff --git a/src/main/java/org/springframework/data/mapping/PersistentEntity.java b/src/main/java/org/springframework/data/mapping/PersistentEntity.java index f8d2e75ee..010d26f49 100644 --- a/src/main/java/org/springframework/data/mapping/PersistentEntity.java +++ b/src/main/java/org/springframework/data/mapping/PersistentEntity.java @@ -97,6 +97,8 @@ public interface PersistentEntity> { */ Optional

getPersistentProperty(String name); + P getRequiredPersistentProperty(String name); + /** * Returns the property equipped with an annotation of the given type. * 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 4b2568e7e..fc99f653f 100644 --- a/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java +++ b/src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java @@ -107,7 +107,7 @@ public class BasicPersistentEntity> implement this.properties = new ArrayList<>(); this.comparator = comparator; this.constructor = new PreferredConstructorDiscoverer<>(this).getConstructor(); - this.associations = comparator.>>map(it -> new TreeSet<>(new AssociationComparator<>(it))) + this.associations = comparator.>> map(it -> new TreeSet<>(new AssociationComparator<>(it))) .orElseGet(() -> new HashSet<>()); this.propertyCache = new HashMap<>(); @@ -273,6 +273,17 @@ public class BasicPersistentEntity> implement return Optional.ofNullable(propertyCache.get(name)); } + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentEntity#getRequiredPersistentProperty(java.lang.String) + */ + @Override + public P getRequiredPersistentProperty(String name) { + + return getPersistentProperty(name).orElseThrow( + () -> new IllegalArgumentException(String.format("No property %s found for type %s!", name, getType()))); + } + /* * (non-Javadoc) * @see org.springframework.data.mapping.PersistentEntity#getPersistentProperty(java.lang.Class)