首页 > 编程语言 > 详细

升级spring和hibernate到4遇到的问题总结

时间:2015-04-06 11:28:42      阅读:326      评论:0      收藏:0      [点我收藏+]

背景:spring从3.0.5升级到4.1.5;  hibernate从3.3.2升级到4.3.7.

错误1:Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class

之前使用了spring-asm包,升级后发现asm最新的包是3.1.4,没有4.1.5的版本,这个错误就是使用3.1.4的版本引起的,后来查资料发现,原来spring3.2以后不再需要asm了,它被合并到spring-core里面了。所以删除asm的包后一切就正常了


错误2:java.lang.NoClassDefFoundError: [Lorg/hibernate/eng,

这是因为使用了hibernate4,在spring的配置文件里面,所有用hibernate3的都要改成用hibernate4

比如:<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">改成

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">


错误3:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;

这是我配置了openSessionInView,查了下web.xml发现还是hibernate3, 所以要搜索一下所有用hibernate3的地方改成hibernate4就好了


错误4:

java.lang.ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder

原因是使用了org.springframework.orm.hibernate3.support.HibernateDaoSupport, 应该改成

org.springframework.orm.hibernate4.support.HibernateDaoSupport
同时新的HibernateDaoSupport不再提供getSession方法,替代方法是currentSession


错误5:查询数据的时候出现这个错误

Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/Proxy

发现之前使用的javassist版本是3.15.0-GA, 的确没有这个类,升级到3.19.0-GA解决

升级spring和hibernate到4遇到的问题总结

原文:http://blog.csdn.net/fireofjava/article/details/44900167

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!