Error creating bean with name 。。。

Unable to get the default Bean Validation

由于版本不相近遇到了两个问题,特此记录下:

 

1.java.lang.NoSuchFieldError:INSTANCEatorg.hibernate.type.BasicTypeRegistry.(BasicTypeRegistry.java:94)atorg.hibernate.type.TypeResolver.(TypeResolver.java:59)atorg.hibernate.cfg.Configuration.(Configuration.java:249)atorg.hibernate.cfg.Configuration.(Configuration.java:300)

 

 

 

经过查找发现是hibernate-annotations.jar和hibernate-commons-annotations.jar的问题,hibernate.jar已经将其整合

 

 

2.去掉两个包之后出现

 

Error creating bean with name 'userManager': Injection of autowireddependencies failed; nested exception isorg.springframework.beans.factory.BeanCreationException: Could notautowire field: private com.bolo.examples.dao.base.UserDaocom.bolo.examples.service.base.UserManager.userDao; nestedexception isorg.springframework.beans.factory.BeanCreationException: Errorcreating bean with name 'userDao' defined in file[E:\MyEclipse9.0\workspace\ssh2\WebRoot\WEB-INF\classes\com\bolo\examples\dao\base\UserDao.class]:Initialization of bean failed; nested exception isorg.springframework.beans.factory.BeanCreationException: Errorcreating bean with name 'sessionFactory' defined in class pathresource [applicationContext.xml]: Invocation of init methodfailed; nested exception is org.hibernate.HibernateException:Unable to get the default Bean Validation factory

 

也是一番查找之后发现在

 

<beanid="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <propertyname="dataSource" ref="dataSource" />
  <propertyname="hibernateProperties">
   <props>
         <propkey="hibernate.show_sql">true</prop>
        <propkey="hibernate.format_sql">true</prop>
        <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <propkey="javax.persistence.validation.mode">none</prop>    

 </props>

  </property>
  <propertyname="packagesToScan" value="com.bolo.examples.entity.*"/>
 </bean>

 

加入红色部分就没有问题了

真是不同的版本差异比较大啊

 

其实这个问题是我们自己造成的!为什么这么说?因为我们在配置Spring和Hibernate进行结合的时候版本出现了问题。
<persistence...>  
  <persistence-unit...> 
   ... 
   <properties> 
     <propertyname="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 the default Bean Validationfactory

 

在hibernate.cfg.xml里增加一属性解决:    

 

<propertyname="javax.persistence.validation.mode">none</property>

"Error creating bean with name 'userController' defined in file [J:\Code\2023-4\TestCache\target\classes\com\example\testcache\contrller\UserController.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisAutoInit' defined in class path resource [com/alicp/jetcache/autoconfigure/RedisAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/UnifiedJedis"这个错误的发生是因为在使用jetcache 2.7.3版本时,缺少了redis.clients.jedis.UnifiedJedis类的定义。 为了解决这个问题,你可以加入如下配置: ``` <!--处理jedis的版本问题--> <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>2.7.3</version> <exclusions> <exclusion> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.1</version> </dependency> ``` 通过添加这些配置,你将解决缺少UnifiedJedis类的问题,从而解决"Error creating bean"的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Error creating bean with name ‘redisAutoInit‘ defined in class path resource ...](https://blog.csdn.net/dghehe/article/details/130173740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值