升级Spring Boot 3后@Type(type)注解出现找不到符号错误
问题解决:Spring Boot 3升级后@Type注解编译报错
问题根源
Spring Boot 3.x集成的是Hibernate 6.x版本,你当前使用的com.vladmihalcea:hibernate-types-55:2.20.0是适配Hibernate 5.5的版本,两者不兼容。Hibernate 6重构了@Type注解,移除了原有的type()属性,直接导致编译时找不到该方法的报错。
解决步骤
1. 替换适配Hibernate 6的依赖
在build.gradle中移除旧的hibernate-types依赖,替换为适配Hibernate 6的版本:
// 移除旧依赖 // implementation 'com.vladmihalcea:hibernate-types-55:2.20.0' // 添加适配Hibernate 6的版本 implementation 'com.vladmihalcea:hibernate-types-60:2.21.1'
注:可根据实际需求选择最新稳定版本,确保与Spring Boot 3.x版本兼容。
2. 修改实体类中的注解
Hibernate 6的@Type注解不再支持字符串类型的type()参数,需要直接指定对应的类型实现类:
处理list-array类型
将@Type(type = "list-array")替换为@Type(ListArrayType.class),并确保导入对应类:
import com.vladmihalcea.hibernate.type.array.ListArrayType; // 原代码 // @Type(type = "list-array") // 修改后 @Type(ListArrayType.class) @Column(name = "course", columnDefinition = "text[]") private List<String> courses;
处理jsonb类型
将@Type(type = "jsonb")替换为@Type(JsonBinaryType.class),导入对应类并保留columnDefinition指定jsonb类型:
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; // 原代码 // @Type(type = "jsonb") // 修改后 @Type(JsonBinaryType.class) @Column(columnDefinition = "jsonb") private List<Address> address;
3. 验证编译结果
重新执行./gradlew clean build命令,即可解决编译报错问题。
内容的提问来源于stack exchange,提问作者MA-Dev
相关产品推荐
相关产品推荐

