在H2数据库中,在具有UUID数据类型列的表上,当省略该字段时,我们如何指定我们希望H2 默认生成UUID值INSERT?
我知道如何生成UUID.我已经阅读了问题,如何在h2数据库中插入特定的UUID?.
我的问题是如何让H2代表我生成UUID值.
小智 16
根据@Thomas Mueller 的说法,在谷歌搜索数小时后,我为JPA或Hibernate创建了一个简单的解决方案。
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(
name = "UUID",
strategy = "org.hibernate.id.UUIDGenerator"
)
@Column(name = "ID", updatable = false, nullable = false)
@ColumnDefault("random_uuid()")
@Type(type = "uuid-char")
@Getter
@Setter
private UUID id;
Run Code Online (Sandbox Code Playgroud)
因此@Type(type = "uuid-char"),VARCHAR(255)如果需要,请将您的字段设为 a (默认情况下为二进制)
并@ColumnDefault("random_uuid()")为生成的表 DDL 设置默认值
Tho*_*ler 10
您可以使用内置功能RANDOM_UUID():
create table test(id int primary key, data uuid default random_uuid());
insert into test(id) values(1);
select * from test;
Run Code Online (Sandbox Code Playgroud)
请注意,如果行数超过几百万(使用关系数据库,而不仅仅是H2),使用UUID(或任何其他随机生成的数据)作为主键将导致性能问题.
| 归档时间: |
|
| 查看次数: |
7820 次 |
| 最近记录: |