Hibernate 6升级中@Type注解type()方法报错问题求助
解决Hibernate 6中UUID列类型映射的报错问题
问题根源
Hibernate 6彻底重构了类型系统:
@org.hibernate.annotations.Type注解的type()参数被移除,改用value()指定类型实现类- 旧的
UUIDCharType已被废弃,替换为新的JDBC类型实现
解决方案
根据你的需求(映射CHAR(36)列到UUID类型),有两种可行方案:
方案1:使用@JdbcTypeCode指定SQL类型
利用Hibernate 6的自动类型映射,通过@JdbcTypeCode明确指定列的SQL类型为CHAR,Hibernate会自动完成UUID与CHAR(36)的转换:
import org.hibernate.type.SqlTypes; import java.util.UUID; import jakarta.persistence.Column; @Column(name = "JOB_ID", columnDefinition = "CHAR(36)") @JdbcTypeCode(SqlTypes.CHAR) public UUID getJobId() { return jobId; }
方案2:使用新的类型实现类
直接指定Hibernate 6中对应CHAR类型UUID的实现类UuidCharJdbcType:
import org.hibernate.type.descriptor.jdbc.UuidCharJdbcType; import java.util.UUID; import jakarta.persistence.Column; import org.hibernate.annotations.Type; @Column(name = "JOB_ID", columnDefinition = "CHAR(36)") @Type(value = UuidCharJdbcType.class) public UUID getJobId() { return jobId; }
注意事项
- 确保项目依赖的是Hibernate Core 6.x版本
- 如果使用字段注解(而非 getter 注解),只需将注解移至对应的字段上即可
内容的提问来源于stack exchange,提问作者hell_storm2004
相关产品推荐
相关产品推荐

