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

时间:2014-05-08 03:59:39

标签: java mysql hibernate

我正在使用二进制格式将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()函数

1 个答案:

答案 0 :(得分:1)

  

什么是BINARY类型?

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

  

UUID()函数创建了什么?

UUID被设计为在空间和时间上全球唯一的数字。对UUID()的两次调用预计会产生两个不同的值,即使这些调用是在两个彼此没有连接的独立计算机上执行的.UUID是一个128位数,由一个包含五个十六进制数的utf8字符串表示。 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee格式:这就是为什么它们是可读的

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