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

如何在JPA中生成String类型UUID并存储为PostgreSQL的VARCHAR

实现UUID生成:PostgreSQL存为字符串、Java用String类型

这个需求完全可行,以下是调整后的实现方案:

一、数据库表创建

将PostgreSQL中的id字段定义为CHAR(36)类型,通过gen_random_uuid()::TEXT生成字符串格式的UUID作为默认值:

CREATE TABLE sample (
    id CHAR(36) DEFAULT gen_random_uuid()::TEXT,
    PRIMARY KEY (id)
);
  • CHAR(36)刚好匹配带连字符的标准UUID长度(36位)
  • gen_random_uuid()::TEXT将PostgreSQL原生UUID类型的生成结果转换为字符串,确保存储的是字符串格式

二、Java实体类实现

使用Hibernate注解配置UUID生成逻辑,直接映射为Java的String类型:

@Entity
public class Sample {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id", columnDefinition = "CHAR(36)", nullable = false)
    private String id;

    // 补充Getter、Setter、无参/有参构造方法等必要代码
}
  • @GeneratedValue和@GenericGenerator指定用Hibernate的UUID生成器生成标准36位带连字符的UUID字符串
  • @Column的columnDefinition对应数据库的CHAR(36)类型,确保映射一致
  • 新版本Hibernate中无需额外@Type注解,框架会自动完成String与CHAR(36)的类型转换

内容的提问来源于stack exchange,提问作者Shreyansh Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:53:14