错误记录(五)Error creating bean with name 'sessionFactory' defined in file
2017-02-18 11:04
701 查看
在hibernate和spring整合时,出现错误如下:
经过一番查找,终于解决了这个错误,原因出现在applicationContext.xml配置中:
<prop key="javax.persistence.validation.mode">none</prop>
加入粗体加下划线部分就没有问题了
真是不同的版本差异比较大啊
其实这个问题是我们自己造成的!为什么这么说?因为我们在配置spring和Hibernate进行结合的时候版本出现了问题。
这是hibernate官方文档的一段话!
意思就是在hibernate.cfg.xml或者是
persistence.xml文件下面需要配置
javax.persistence.validation.mode属性!
特别的!在Hibernate中默认的
<propkey="javax.persistence.validation.mode">none</prop>
是auto而不是none!
------------------------------------------------------------------------------------------------------------------------------------------
javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包,但是找不到,所以beanvalitionFactory错误。
由于javax.persistence.validation.mode的属性值默认是auto,所以会出错。
在hibernate.cfg.xml里将javax.persistence.validation.mode设置为none,就可以避免出错了。
<!-- Disable the BeanValidation-->
<propertyname="javax.persistence.validation.mode">none</property>
------------------------------------------------------------------------------------------------------------------------------------------
所以,Hibernate3.6以上版本在用junit测试时会提示错误:
Unable to get thedefault Bean Validationfactory
在hibernate.cfg.xml里增加一属性解决:
<propertyname="javax.persistence.validation.mode">none</property>
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [G:\workspace\s_hibernate\src\applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Error applying BeanValidation relational constraints at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140) at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84) at org.test.Test.main(Test.java:16) Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219) at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782) at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ... 12 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208) ... 21 more Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524) at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119) ... 26 more Caused by: javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath. at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:271) at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110) at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521) ... 27 more
经过一番查找,终于解决了这个错误,原因出现在applicationContext.xml配置中:
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <propertyname="dataSource"ref="dataSource" /> <propertyname="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="javax.persistence.validation.mode">none</prop> </props> </property> <propertyname="packagesToScan"value="com.bolo.examples.entity.*"/> </bean>
<prop key="javax.persistence.validation.mode">none</prop>
加入粗体加下划线部分就没有问题了
真是不同的版本差异比较大啊
其实这个问题是我们自己造成的!为什么这么说?因为我们在配置spring和Hibernate进行结合的时候版本出现了问题。
<persistence...> <persistence-unit...> ... <properties> <property name="javax.persistence.validation.mode" value="callback,ddl"/> </properties> </persistence-unit> </persistence>
这是hibernate官方文档的一段话!
意思就是在hibernate.cfg.xml或者是
persistence.xml文件下面需要配置
javax.persistence.validation.mode属性!
特别的!在Hibernate中默认的
<propkey="javax.persistence.validation.mode">none</prop>
是auto而不是none!
------------------------------------------------------------------------------------------------------------------------------------------
javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包,但是找不到,所以beanvalitionFactory错误。
由于javax.persistence.validation.mode的属性值默认是auto,所以会出错。
在hibernate.cfg.xml里将javax.persistence.validation.mode设置为none,就可以避免出错了。
<!-- Disable the BeanValidation-->
<propertyname="javax.persistence.validation.mode">none</property>
------------------------------------------------------------------------------------------------------------------------------------------
所以,Hibernate3.6以上版本在用junit测试时会提示错误:
Unable to get thedefault Bean Validationfactory
在hibernate.cfg.xml里增加一属性解决:
<propertyname="javax.persistence.validation.mode">none</property>
相关文章推荐
- BeanCreationException:Error creating bean with name 'sessionFactory' defined in file
- Error creating bean with name 'sessionFactory' defined in file
- SSM整合报错:Error creating bean with name 'sqlSessionFactory' defined in file...
- Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xm
- Error creating bean with name 'sessionFactory' defined in ServletContext resource
- Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applica
- Spring Error creating bean with name 'sessionFactory ' defined in ServletContext resource [/WEB-INF/
- Error creating bean with name 'sessionFactory' defined in class path resource
- Error creating bean with name 'sessionFactory' defined in ServletContext resource 解决方法之一
- Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xm
- Error creating bean with name 'sessionFactory' defined in class path resource
- Error creating bean with name 'sessionFactory' defined in ServletContext resource
- Error creating bean with name 'sessionFactory' defined in ServletContext resource
- Spring异常:Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.
- Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xm
- Spring异常:Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.
- Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xm
- Error creating bean with name 'sessionfactory' defined in ServletContext resource [/WEB-INF/applicat
- Error creating bean with name 'sessionFactory' defined in class path resource [beans.xml]: Invocatio
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContex