我正在使用二进制格式将UUID存储在mysql数据库中(binnary(16))
我在hibernate中使用以下代码
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column( columnDefinition = "BINARY(16)", length = 16 )
private UUID id;
当我在phpmyadmin中查看
时,这些生成的值看起来不同并且看起来像垃圾值如果我在mysql查询中使用UUID()函数似乎很好 那么如何告诉hibernate使用UUID()函数
答案 0 :(得分:1)
什么是BINARY类型?
它们包含字节字符串而不是字符串。这意味着它们没有字符集,排序和比较基于值中字节的数值。这就是为什么它们看起来像垃圾值
UUID()函数创建了什么?
UUID被设计为在空间和时间上全球唯一的数字。对UUID()的两次调用预计会产生两个不同的值,即使这些调用是在两个彼此没有连接的独立计算机上执行的.UUID是一个128位数,由一个包含五个十六进制数的utf8字符串表示。 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee格式:这就是为什么它们是可读的
UUID()
函数不会创建字节字符串,而是创建字符串。所以,他们是非常不同的。