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

标签 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()函数

最佳答案

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/

相关文章:

java - Firebase - 具有自定义字段名称的 getValue()

spring - 使用 Hibernate 和 Oracle 找不到架构

java - 如何使 Apache Camel Servlet 请求立即返回?

java - 如何确定给定各种温度输入的归一化温度?

java - 将日本日期格式(2013年11月24日)转换为普通日期格式(2013-11-24)

mysql - 日期比较不起作用(日期是字符串)-MySQL

MySQL 在插入之前触发

php - 合并mysql中的依赖查询

java - 在 JPA 的多对多关系中使用组合键

java - 在 Hibernate 中,我在运行时遇到以下错误