Hibernate3.5升级至5.5.4.Final启动报AccessType类缺失问题求助
Hibernate版本升级缺失AccessType类问题解决方案
- 检查配置文件遗留旧引用
检查hibernate.cfg.xml、实体类注解、hbm映射文件中的缓存相关配置:- 确认缓存区域工厂类、实体
@Cache注解的访问策略配置,均使用Hibernate5对应的新类路径 - 全局搜索所有配置文件中是否存在
org.hibernate.cache.access.AccessType字符串,替换为org.hibernate.cache.spi.access.AccessType
- 确认缓存区域工厂类、实体
- 对齐二级缓存适配依赖版本
如果你使用了二级缓存组件(如Ehcache),需确保缓存适配包版本和当前Hibernate核心版本完全一致:
示例(以Ehcache为例),在pom.xml中补充同版本适配依赖:
不要单独引入适配Hibernate3的旧版缓存集成包,避免跨版本依赖冲突。<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>5.5.4.Final</version> </dependency> - 清理旧编译产物重新构建
执行mvn clean install命令全量清理并重新构建项目,避免增量编译残留旧版本Hibernate编译出的class文件,导致运行时引用旧类路径。 - 排查容器全局类路径冲突
如果你使用Tomcat等外置Web容器部署应用,检查容器的全局lib目录下是否存在旧版本Hibernate相关jar包,父类加载器会优先加载全局lib中的类,导致项目内引入的新版Hibernate不生效,删除容器内旧Hibernate jar包即可。 - 核对自定义缓存类的导入路径
全局搜索项目代码中所有AccessType的导入语句,确认自定义缓存策略、服务类中,均已将旧导入路径import org.hibernate.cache.access.AccessType;替换为新路径import org.hibernate.cache.spi.access.AccessType;。
内容的提问来源于stack exchange,提问作者tjholmes66
相关产品推荐
相关产品推荐

