Generate UUID values by default for each row on column of UUID type in H2 Database Engine

妖精的绣舞 提交于 2019-11-28 11:34:21
Thomas Mueller

You can use built-in function RANDOM_UUID():

create table test(id int primary key, data uuid default random_uuid());
insert into test(id) values(1);
select * from test;

Note that using the UUID (or any other randomly generated data) as the primary key will result in performance problems if there are more than a few million rows (with relational databases in general, not just with H2).

googling for hours I've created a simple solution, according to @Thomas Mueller

with hibernate and jpa:

@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;

So @Type(type = "uuid-char") makes your field a VARCHAR(255) if you need it (it's binary by default)

And @ColumnDefault("random_uuid()") puts the dedault value for generated table DDL

Hope this helps

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!