Hibernate的uuid生成和mysql的uuid函数uuid()



我使用二进制格式在mysql数据库中存储uuid (binbinary (16))

,我在hibernate

中使用以下代码
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column( columnDefinition = "BINARY(16)", length = 16 )
private UUID id;

这些生成的值看起来不同,似乎是垃圾值,当我在phpmyadmin

查看

如果我使用UUID()函数在mysql查询似乎很好。
那么如何告诉hibernate使用UUID()函数

什么是BINARY Type

它们包含字节字符串而不是字符串。这意味着它们没有字符集,排序和比较是基于值中字节的数值。这就是为什么它们看起来像垃圾值

UUID()函数创建什么?

UUID被设计为一个在空间和时间上全局唯一的数字。对UUID()的两次调用预计会生成两个不同的值,即使这些调用是在两台互不连接的独立计算机上执行的。UUID是一个128位的数字,由5个十六进制数字组成的utf8字符串表示,格式为aaaaaaaaaaaaaaaaaaaaaaaabbbbccccdddd eeeeeeeeeeeeeeeeeeee:这就是为什么它们是可读的

UUID()函数不创建字节串,而是创建字符串。所以,它们是非常不同的。

最新更新