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
相关产品推荐
相关产品推荐

