Spring Boot Maven项目构建时找不到JdbcTypeCode等符号的问题排查
问题:Spring Boot Maven构建出现"symbol not found error"
报错信息
#13 552.4 [ERROR] /build/src/main/java/com/../Employee.java:[26,32] error: cannot find symbol #13 552.4 [ERROR] symbol: class JdbcTypeCode #13 552.4 [ERROR] location: package org.hibernate.annotations #13 552.4 [ERROR] /build/src/main/java/com/../Employee.java:[27,25] error: cannot find symbol #13 552.4 [ERROR] symbol: class SqlTypes #13 552.4 [ERROR] location: package org.hibernate.type
当前pom.xml依赖配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>6.2.4.Final</version> </dependency> <dependency> <groupId>org.hibernate.common</groupId> <artifactId>hibernate-commons-annotations</artifactId> <version>5.0.1.Final</version> </dependency>
已导入的类
import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.type.SqlTypes;
修复方案
问题根源
- 包路径变更:Hibernate 6.x中
SqlTypes的位置从org.hibernate.type迁移到了org.hibernate.type.descriptor.sql,旧导入路径无法找到类。 - 依赖冲突/冗余:
hibernate-commons-annotations是Hibernate 5.x及以前的依赖,Hibernate 6.x已将其功能整合到hibernate-core中,旧版本的该依赖会和Hibernate 6.x产生冲突,导致JdbcTypeCode无法被识别。 - 版本管理问题:手动指定
hibernate-core版本可能和Spring Boot starter自带的版本产生冲突(若Spring Boot版本与Hibernate版本不匹配)。
具体修复步骤
- 清理冗余依赖:删除pom.xml中的
hibernate-commons-annotations依赖,Hibernate 6.x不需要这个单独包。 - 修正类导入路径:修改Java文件中的导入语句:
import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.type.descriptor.sql.SqlTypes; - 优化Hibernate版本管理:
- 若不需要强制指定Hibernate版本,直接删除
hibernate-core的手动依赖,让spring-boot-starter-data-jpa自动管理兼容的版本。 - 若必须使用
6.2.4.Final版本,建议通过Spring Boot全局属性配置,避免版本冲突:
同时删除手动添加的<properties> <hibernate.version>6.2.4.Final</hibernate.version> </properties>hibernate-core依赖。
- 若不需要强制指定Hibernate版本,直接删除
内容的提问来源于stack exchange,提问作者sachin p
相关产品推荐
相关产品推荐

