我使用二进制格式将 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()函数
最佳答案
What is BINARY Type ?
它们包含字节串而不是字符串。这意味着它们没有字符集,并且排序和比较是基于值中字节的数值。这就是为什么它们看起来像垃圾值
What does UUID() function create?
UUID 被设计为在空间和时间上全局唯一的数字。对 UUID() 的两次调用预计会生成两个不同的值,即使这些调用是在未相互连接的两台独立计算机上执行的。UUID 是一个 128 位数字,由五个十六进制数字组成的 utf8 字符串表示aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeee 格式:这就是它们可读的原因
UUID()
函数创建的不是字节串,而是字符串。所以,它们非常不同。
关于java - Hibernate uuid生成和mysql uuid函数uuid(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23532492/