2011-12-08 9 views
21

sto ottenendo seguente eccezione dopo la migrazione a Spring Framework 3.1.0 RC1 con Hibernate 4.0.0 CR7Nessun traduttore di eccezioni di persistenza trovato nella fabbrica di bean. Non è possibile eseguire la conversione eccezione

2011-12-08/11: 48: 38,425/EST [Thread-17 ] ERRORE Inizializzazione del contesto non riuscita org.springframework.beans.factory.BeanCreationException: errore durante la creazione di bean con nome 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor # 0' definito nella risorsa ServletContext [/WEB-INF/applicationContext-hibernate.xml] : Inizializzazione del bean fallita; l'eccezione annidata è java.lang.IllegalStateException: nessun traduttore di eccezioni di persistenza trovato nella fabbrica di bean. Impossibile eseguire la traduzione delle eccezioni. a org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:530) a org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:459) a org.springframework. beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:294) all'indirizzo org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:225) all'indirizzo org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:291) all'indirizzo org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) all'indirizzo org.springframework.context.support.AbstractApplica tionContext.registerBeanPostProcessors (AbstractApplicationContext.java:728) a org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:449) a org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:381) a org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:283) a org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:111) a org.apache.catalina.core. StandardContext.listenerStart (StandardContext.java:4723) all'indirizzo org.apache.catalina.core.StandardContext $ 1.call (StandardContext.java:5226) all'indirizzo org.apache.catalina.core.StandardContext $ 1.call (StandardContext.java: 5221) a java.util.concurrent.FutureTask $ Sync.innerRun (fonte sconosciuta) a java.util.concurrent.FutureTask.run (fonte sconosciuta) a java.util.concurrent.ThreadPoolExecutor.runWorker (fonte sconosciuta) in java .util.concurrent.ThreadPoolExecutor $ Worker.run (sorgente sconosciuta) a java.lang.Thread.run (fonte sconosciuta) Causato da: java.lang.IllegalStateException: nessun traduttore di eccezioni di persistenza trovato nella fabbrica di bean. Impossibile eseguire la traduzione delle eccezioni. a org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators (PersistenceExceptionTranslationInterceptor.java:142) a org.springframework.dao.support.PersistenceExceptionTranslationInterceptor. (PersistenceExceptionTranslationInterceptor.java:79) a org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor . (PersistenceExceptionTranslationAdvisor.java:70) a org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory (PersistenceExceptionTranslationPostProcessor.java:103) a org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods (AbstractAutowireCapableBeanFactory.java:1465) presso org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactor y.initializeBean (AbstractAutowireCapableBeanFactory.java:1433) all'indirizzo org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:522) ...18 altro

+0

non richiede alcuna PersistenceExceptionTranslationPostProcessor altri fagioli da definire. Non l'ho mai usato prima, ma suppongo che sia ciò che sta causando il tuo errore. – JustinKSU

+1

Sembra che sia necessario definire una delle derivate di [PersistenceExceptionTranslator] (http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/dao/support/PersistenceExceptionTranslator.html) in configurazione del bean. – srkavin

risposta

25

E con la nuova configurazione della molla java:

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

Come menzionato da skravin, è necessario configurare un HibernateExceptionTranslator. Lo LocalSessionFactoryBean per Hibernate 3 implementa PersistenceExceptionTranslator, ma quello per Hibernate 4 no.

+2

Che cosa significa "configurare HibernateExceptionTranslator"? Seguo questo documento http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/ e non lo menziona? Grazie. –

+1

Basta dichiarare un bean di questo tipo nel file XML del contesto di primavera. –

+1

Ma come esattamente? Non funziona ovviamente. Mi chiedo perché non è documentato nel tutorial ufficiale. Grazie –

Problemi correlati