You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:09:22