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

Oracle RAW字段迁移至PostgreSQL:UUID字段适配类型咨询

适配PostgreSQL的UUID字段类型替换方案

问题背景

在Oracle环境下,Hibernate实体中用RAW(16)类型存储UUID:

@Column(name = "NUMBER", columnDefinition = "RAW(16)")
private UUID number;

迁移到PostgreSQL后触发异常:

Caused by: org.postgresql.util.PSQLException: ERROR: type "raw" does not exist

解决方案

PostgreSQL原生提供了uuid类型专门用于存储UUID值,替换方式分两种:

  • 方式一:直接修改columnDefinition
    把原Oracle专属的RAW(16)替换为PostgreSQL的uuid类型:
@Column(name = "NUMBER", columnDefinition = "uuid")
private UUID number;
  • 方式二:依赖Hibernate方言自动适配(推荐)
    如果Hibernate配置中已正确指定PostgreSQL方言(如org.hibernate.dialect.PostgreSQLDialect或对应版本的方言),可以直接移除columnDefinition,让Hibernate自动完成UUID到PostgreSQL uuid类型的映射:
@Column(name = "NUMBER")
private UUID number;

补充说明

PostgreSQL的uuid类型不仅能完美适配UUID存储,还支持原生UUID相关函数(如uuid_generate_v4()生成随机UUID),比二进制存储更具可读性和易用性。

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:11