2011-12-08 18 views
21

Me estoy poniendo siguiente excepción después de migrar a Spring Framework 3.1.0 RC1 con Hibernate 4.0.0 CR7No se encontraron traductores de excepción de persistencia en la fábrica de frijoles. No se puede realizar la traducción de excepción

2011-12-08/11: 48: 38.425/EST [Tema-17 ] ERROR Falló la inicialización del contexto org.springframework.beans.factory.BeanCreationException: Error al crear beans con el nombre 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor # 0' definido en el recurso ServletContext [/WEB-INF/applicationContext-hibernate.xml] : La inicialización de Bean falló; la excepción anidada es java.lang.IllegalStateException: no se encontraron traductores de excepciones de persistencia en la fábrica de frijoles. No se puede realizar una traducción de excepción. en org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:530) en org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:459) en org.springframework. beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:294) en org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:225) en org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:291) en org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) en org.springframework.context.support.AbstractApplica tionContext.registerBeanPostProcessors (AbstractApplicationContext.java:728) en org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:449) en org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:381) en org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:283) en org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:111) en org.apache.catalina.core. StandardContext.listenerStart (StandardContext.java:4723) en org.apache.catalina.core.StandardContext $ 1.call (StandardContext.java:5226) en org.apache.catalina.core.StandardContext $ 1.call (StandardContext.java: 5221) en java.util.concurrent.FutureTask $ Sync.innerRun (origen desconocido) en java.util.concurrent.FutureTask.run (origen desconocido) en java.util.concurrent.ThreadPoolExecutor.runWorker (origen desconocido) en java .util.concurrent.ThreadPoolExecutor $ Worker.run (Fuente desconocida) en java.lang.Thread.run (Fuente desconocida) Causado por: java.lang.IllegalStateException: No se encontraron traductores de excepción de persistencia en la fábrica de beans. No se puede realizar una traducción de excepción. en org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators (PersistenceExceptionTranslationInterceptor.java:142) en org.springframework.dao.support.PersistenceExceptionTranslationInterceptor. (PersistenceExceptionTranslationInterceptor.java:79) en org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor . (PersistenceExceptionTranslationAdvisor.java:70) en org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory (PersistenceExceptionTranslationPostProcessor.java:103) en org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods (AbstractAutowireCapableBeanFactory.java:1465) en org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor y.initializeBean (AbstractAutowireCapableBeanFactory.java:1433) en org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:522) ...18 más

+0

¿El PersistenceExceptionTranslationPostProcessor requiere ningún otro frijoles a ser definidos. Nunca lo he usado antes, pero supongo que eso es lo que está causando tu error. – JustinKSU

+1

Parece que necesita definir una de las derivadas de [PersistenceExceptionTranslator] (http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/dao/support/PersistenceExceptionTranslator.html) en configuración de frijol – srkavin

Respuesta

25

Y con la nueva configuración de Java primavera:

@Bean 
    public HibernateExceptionTranslator hibernateExceptionTranslator(){ 
     return new HibernateExceptionTranslator(); 
    } 
23

Según lo mencionado por skravin, debe configurar un HibernateExceptionTranslator. El LocalSessionFactoryBean para Hibernate 3 implementa PersistenceExceptionTranslator, pero el de Hibernate 4 no.

+2

¿Qué significa "configurar HibernateExceptionTranslator"? Sigo este doc http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/ y no lo menciona? Gracias. –

+1

Simplemente declare un bean de este tipo en su archivo XML de contexto de primavera. –

+1

Pero, ¿cómo exactamente? No funciona obviamente. Me pregunto por qué no está documentado en el tutorial oficial. Gracias –

Cuestiones relacionadas