diff --git a/pom.xml b/pom.xml index 526ad136a5..e27726e761 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-commons - 2.6.0-SNAPSHOT + 2.6.0-gh-2329-SNAPSHOT Spring Data Core 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 f04bdd5ac3..d6755d1942 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -108,7 +108,8 @@ protected AbstractMappingContext() { this.persistentPropertyPathFactory = new PersistentPropertyPathFactory<>(this); EntityInstantiators instantiators = new EntityInstantiators(); - PersistentPropertyAccessorFactory accessorFactory = NativeDetector.inNativeImage() ? BeanWrapperPropertyAccessorFactory.INSTANCE + PersistentPropertyAccessorFactory accessorFactory = NativeDetector.inNativeImage() + ? BeanWrapperPropertyAccessorFactory.INSTANCE : new ClassGeneratingPropertyAccessorFactory(); this.persistentPropertyAccessorFactory = new InstantiationAwarePropertyAccessorFactory(accessorFactory, @@ -378,25 +379,21 @@ protected Optional addPersistentEntity(TypeInformation typeInformation) { descriptors.put(descriptor.getName(), descriptor); } - try { - - PersistentPropertyCreator persistentPropertyCreator = new PersistentPropertyCreator(entity, descriptors); - ReflectionUtils.doWithFields(type, persistentPropertyCreator, PersistentPropertyFilter.INSTANCE); - persistentPropertyCreator.addPropertiesForRemainingDescriptors(); + PersistentPropertyCreator persistentPropertyCreator = new PersistentPropertyCreator(entity, descriptors); + ReflectionUtils.doWithFields(type, persistentPropertyCreator, PersistentPropertyFilter.INSTANCE); + persistentPropertyCreator.addPropertiesForRemainingDescriptors(); - entity.verify(); - - if (persistentPropertyAccessorFactory.isSupported(entity)) { - entity.setPersistentPropertyAccessorFactory(persistentPropertyAccessorFactory); - } + entity.verify(); - } catch (RuntimeException e) { - persistentEntities.remove(typeInformation); - throw e; + if (persistentPropertyAccessorFactory.isSupported(entity)) { + entity.setPersistentPropertyAccessorFactory(persistentPropertyAccessorFactory); } } catch (BeansException e) { throw new MappingException(e.getMessage(), e); + } catch (RuntimeException e) { + persistentEntities.remove(typeInformation); + throw e; } finally { write.unlock(); }