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

Hibernate @Type注解失效:uuid-char属性报错问题咨询

解决@Type注解属性type未定义的问题

问题根源

你参考的是Hibernate 5.x及更早版本的文档,但实际使用的是Hibernate 6.x及以上版本——两个版本的@Type注解API存在兼容性变化:Hibernate 6.x将@Type的type属性改为了value属性,同时推荐使用更类型安全的新注解。

解决方案

方案1:适配Hibernate 6.x的@Type写法

将@Type(type="uuid-char")修改为@Type(value="uuid-char"),直接替换属性名即可:

@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "id", columnDefinition = "VARCHAR(40)")
@Type(value="uuid-char") // 替换type为value
@JsonIgnore
private UUID id;

方案2:Hibernate 6.x推荐写法(更类型安全)

使用@JdbcTypeCode注解替代@Type,避免字符串类型名称的硬编码:

import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;

// ...

@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "id", columnDefinition = "VARCHAR(40)")
@JdbcTypeCode(SqlTypes.CHAR) // 对应CHAR类型,也可使用SqlTypes.VARCHAR
@JsonIgnore
private UUID id;

方案3:确认Hibernate版本(5.x及以下)

如果项目确实基于Hibernate 5.x及更早版本,检查以下两点:

  • 确保导入的是org.hibernate.annotations.Type包,而非其他同名注解
  • 检查项目依赖,确认Hibernate版本与文档一致,排除依赖冲突导致的版本不匹配

内容的提问来源于stack exchange,提问作者Nishant Bharat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:01:07