使用 uuid id 生成器的 Grails:不是很随机

Grails using uuid id generator: Not very random

一个简单的 Grails 4 应用程序使用 uuid id 生成器和 Hibernate 7.0.4 插件以及 Ubuntu 20.04 下的 PostgreSQL 10。这是创建 4 个实例后的一些输出:

=> select id,ttag,name from msg_template;
                id                | ttag |      name       
----------------------------------+------+-----------------
 ff808181781632030178163215190000 | publ | Notice01
 ff8081817816320301781632151f0001 | publ | Notice02
 ff808181781632030178163215230002 | publ | Signing01
 ff8081817816320301781635161b0003 | acme | Some thingy!

我的假设是 uuid = 随机性,但这个结果非常不随机。随机性不是可以期待的吗?

UUID 有不同的版本和变体,请参阅 https://en.wikipedia.org/wiki/Universally_unique_identifier。并非每个版本都会生成随机值。

但是,版本 4 基于随机数生成器生成随机值。

对于Java,随机数生成器可以通过系统属性java.security.egd更精确的定义,参见https://www.baeldung.com/java-security-egd.

使用 java.util.UUID.randomUUID() 生成版本 4 的 UUID。

对于 Hibernate 有不同的方式使用 UUID,这里

可以提供帮助。