在bean工厂中找不到持久性异常转换器。无法执行异常转换

时间:2011-12-08 17:00:31

标签: java hibernate migration spring-3

迁移到使用Hibernate 4.0.0 CR7的Spring Framework 3.1.0 RC1后,我遇到异常

  

2011-12-08 / 11:48:38.425 / EST [Thread-17] ERROR上下文初始化失败   org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext-hibernate.xml]中定义名称为'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'的bean创建错误:bean的初始化失败;嵌套异常是java.lang.IllegalStateException:在bean工厂中找不到持久性异常转换器。无法执行异常转换。       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:530)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:459)       在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:294)       在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)       在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)       在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)       在org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728)       在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449)       在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:381)       在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)       在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)       在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)       at org.apache.catalina.core.StandardContext $ 1.call(StandardContext.java:5226)       在org.apache.catalina.core.StandardContext $ 1.call(StandardContext.java:5221)       at java.util.concurrent.FutureTask $ Sync.innerRun(Unknown Source)       at java.util.concurrent.FutureTask.run(Unknown Source)       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)       在java.lang.Thread.run(未知来源)   引起:java.lang.IllegalStateException:在bean工厂中找不到持久性异常转换器。无法执行异常转换。       at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:142)       在org.springframework.dao.support.PersistenceExceptionTranslationInterceptor。(PersistenceExceptionTranslationInterceptor.java:79)       在org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor。(PersistenceExceptionTranslationAdvisor.java:70)       at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:103)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1465)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1433)       在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)       ......还有18个

2 个答案:

答案 0 :(得分:25)

使用新的spring java配置:

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

答案 1 :(得分:23)

如skravin所述,您必须配置HibernateExceptionTranslator。 Hibernate 3的LocalSessionFactoryBean实现了PersistenceExceptionTranslator,而Hibernate 4的实现却没有。{/ p>