修复Hibernate升级后JdbcIsolationDelegate.sqlExceptionHelper()空指针异常
解决Hibernate 6.5.2.Final启动时的NullPointerException异常
异常信息
java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:116) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:290) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:123) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:77) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
问题根源
你当前配置中的spring: schema: DB_SCHEMA并非Spring Boot或Hibernate 6.x的标准配置项,Hibernate无法识别该配置来正确初始化数据库schema相关服务,导致初始化流程中SqlExceptionHelper依赖未被正确注入,进而触发空指针异常。
解决方案
1. 修正Schema配置项
将原配置替换为Spring Boot + Hibernate 6.x的标准schema配置,二选一即可:
方式一:通过Hibernate属性指定
spring: jpa: properties: hibernate: default_schema: DB_SCHEMA
方式二:通过Spring JPA命名配置指定
spring: jpa: hibernate: naming: default-schema: DB_SCHEMA
2. 检查依赖一致性
确保项目中所有Hibernate相关依赖(如hibernate-core、hibernate-entitymanager等)版本统一为6.5.2.Final,避免混合不同版本导致的初始化冲突。
3. 验证修复
清理项目构建缓存(如Maven的clean或Gradle的clean任务),重启应用,确认异常是否消除。
内容的提问来源于stack exchange,提问作者Fernando Ortega Gorrita
相关产品推荐
相关产品推荐

