我在我的java应用程序中使用hibernate + mysql,当我在表中插入一个条目时,我想生成一个唯一的字符串id(UUID)。
如何创建表格以便我可以自动生成uuid并将其用作实体键?
+------------+-------------------------------------+
| uuid | name |
+------------+-------------------------------------+
| asdf1221 | name 1 |
| sksdkfk1 | name 2 |
+------------+-------------------------------------+
答案 0 :(得分:1)
MySQL不允许使用函数提供默认值,但请参见Can I use a function for a default value in MySql?,以了解如何创建触发器来实现此功能。
请注意,MySQL的UUID()
返回一个CHAR(36)
,并且将UUID作为文本存储(如这些答案所示)显然是无效的。相反,该列应为BINARY(16)
,并且在插入数据时可以使用UUID_TO_BIN()
,而在读回数据时可以使用BIN_TO_UUID()
。
答案 1 :(得分:0)
我建议您使用Java生成uuid。
如果您担心安全性,请使用Java进行。
Hibernate从数据库二进制(16)与Java UUID之间协调提供了本地支持。只需在Java实体中将字段类型设置为UUID,列定义为Binary(16)。