diff --git a/src/main/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigDefinitionParser.java b/src/main/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigDefinitionParser.java index f1e9d9cb4..cf0f7c171 100644 --- a/src/main/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigDefinitionParser.java +++ b/src/main/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigDefinitionParser.java @@ -19,6 +19,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.data.jpa.repository.config.SimpleJpaRepositoryConfiguration.JpaRepositoryConfiguration; import org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser; import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor; @@ -47,6 +48,8 @@ class JpaRepositoryConfigDefinitionParser private static final Class PAB_POST_PROCESSOR = PersistenceAnnotationBeanPostProcessor.class; + private static final Class PET_POST_PROCESSOR = + PersistenceExceptionTranslationPostProcessor.class; /* @@ -129,6 +132,16 @@ class JpaRepositoryConfigDefinitionParser super.registerBeansForRoot(registry, source); + if (!hasBean(PET_POST_PROCESSOR, registry)) { + + AbstractBeanDefinition definition = + BeanDefinitionBuilder + .rootBeanDefinition(PET_POST_PROCESSOR) + .getBeanDefinition(); + + registerWithSourceAndGeneratedBeanName(registry, definition, source); + } + if (!hasBean(PAB_POST_PROCESSOR, registry)) { AbstractBeanDefinition definition =