nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service

本文详细记录了解决Spring Hibernate整合过程中遇到的错误:'nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service'的过程。问题排查包括:Hibernate配置、数据库连接、JDBC驱动版本、jar包冲突等。通过逐步分析,修复了包括NoClassDefFoundError、'error performing isolated work'在内的多个错误,最终成功运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Spring_hibernate_整合出现的bug:
nested exception is org.hibernate.service.spi.ServiceException:
Unable to create requested service

这个bug足足困惑了,我两天的时间(业余时间),真费劲心思研究,刚好赶上断网期间,最后不惜流量上网查资料最后还好解决了。

bug翻译是:无法创建所请求的服务。
其中网上查阅资料可以从以下几点查找:
1、hibernate 配置问题
2、数据库配置不正确或服务未启动
3、jdbc驱动包版本问题或错误

首先我对hibernate不太熟悉,故而先排除后面两项,让程序直接联数据库,设置好参数避免出错,排除后;
1、我仔细检查了程序,找不出BUG后,怀疑自己的引入的jar包出现问题(尽量不要盲目进入jar否则会使bug分析起来特别复杂),把hibernate的所有包都remove掉,重新引入,缺啥引啥,
2、首先我下载支持自己JDK的hibernate的jar包(hibernate-release-5.0.12.Final 支持JDK 6+),引入…\hibernate-release-5.0.12.Final\lib\required此目录下的所有jar包,开始运行看错误信息依次引入的包hibernate-annotations.jar(需要自己下载)和slf4j-api-1.7.25.jar(需要自己下载)
3、报错:nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider;
看到这个错误,还是很有耐心的毕竟不是前面那个错误了,百度后解决办法:
hibernate4整合spring3.1的过程中,发现了Java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider异常,查了一下相关资料,原来发现hibernate4已经将hibernate3的一些功能改掉了,在hibernate4已经不使用CacheProvider了,所以做了以下修改,

	原先:<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

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

又解决一个问题!

4、新的bug又来了 :error performing isolated work
反正看不懂就开始百度走起:
使用 @GeneratedValue 注解能实现自增字段自动添加。
但是使用 @GeneratedValue 会报错 “error performing isolated work“;
解决办法就是
@GeneratedValue 直接改成后面的(记得import):

@GeneratedValue(strategy = GenerationType.IDENTIT)

5、最后一运行居然成功了!!!!

6、不要高兴太早,后续还需要BUG,是不是想哭呢,接着来吧;
BUG:Unable to construct current session context
java.lang.NoClassDefFoundError: org/hibernate/service/jta/platform/spi/JtaPlatform
问题很明显就是jar不对,

而spring中需要的路径 org.hibernate.service.jta.platform.spi.JtaPlatform
我的hibernate(我的是5.0.12)的路径不是,而只有hibernate4.2的路径是这个,那只能下载新的jar包了(我的hibernate-release-4.2.21.Final)
重新引入jar,之后运行完美解决
等着有网,一定把jar报奉上!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值