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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:47:06