我使用二进制格式在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()
函数不创建字节串,而是创建字符串。所以,它们是非常不同的。