Mysql UUID作为实体id
我在java应用程序中使用hibernate+mysql,我想在向表中插入条目时生成一个唯一的字符串id(UUID) 如何创建一个表,以便自动生成uuid并将其用作实体键Mysql UUID作为实体id,mysql,hibernate,Mysql,Hibernate,我在java应用程序中使用hibernate+mysql,我想在向表中插入条目时生成一个唯一的字符串id(UUID) 如何创建一个表,以便自动生成uuid并将其用作实体键 +------------+-------------------------------------+ | uuid | name | +------------+-------------------------------------+ | asd
+------------+-------------------------------------+
| uuid | name |
+------------+-------------------------------------+
| asdf1221 | name 1 |
| sksdkfk1 | name 2 |
+------------+-------------------------------------+
MySQL不允许为默认值使用函数,但请参阅以了解如何创建触发器来实现此目的
请注意,MySQL的
UUID()
返回一个CHAR(36)
,将UUID存储为文本(如这些答案所示)显然效率低下。相反,列应该是BINARY(16)
,插入数据时可以使用UUID\u TO\u BIN()
,读回数据时可以使用BIN\u TO\u UUID()
randomUuid()是类型4,加密性很强;MySQL uuid()属于类型1,它基于时间,相对容易预测
如果您关心安全性,请使用Java进行
正如Stephen所提到的,二进制(16)在数据库中存储uuid时效率更高
Hibernate通过协调数据库二进制文件(16)和JavaUUID,获得了本机支持。只需在Java实体中将字段类型设置为UUID,列定义为二进制(16)。使用create table
SQL查询?到底是什么问题?ypu对uuid意味着什么?uuid是自动增量还是自动增量