java uuid 排序_如何在java中将UUID保存为二进制(16)
我有一個表TestTable,列ID為二進制(16),名稱為varchar(50)
我看到UUID作為HEX(blob)保存在數據庫中
所以我想從java中保存這個ID,但是我收到了這個錯誤
Data truncation: Data too long for column ‘ID’ at row 1
我目前正在使用庫sql2o與mysql進行交互
所以基本上這是我的代碼
String suuid = UUID.randomUUID().toString();
String partial_id = suuid.substring(14,18) + suuid.substring(9, 13) + suuid.substring(0, 8) + suuid.substring(19, 23) + suuid.substring(24)
String final_id = String.format("%040x", new BigInteger(1, partial_id.getBytes()));
con.createQuery("INSERT INTO TestTable(ID, Name) VALUES(:id, :name)")
.addParameter("id", final_id)
.addParameter("name", "test1").executeUpdate();
部分ID應該是這樣的11d8eebc58e0a7d796690800200c9a66
我在mysql中嘗試了這個語句沒有問題
insert into testtable(id, name) values(UNHEX(CONCAT(SUBSTR(uuid(), 15, 4),SUBSTR(uuid(), 10, 4),SUBSTR(uuid(), 1, 8),SUBSTR(uuid(), 20, 4),SUBSTR(uuid(), 25))), 'Test2');
但是當我刪除unhex函數時,我得到了同樣的錯誤.那么我怎樣才能將正確的ID從Java發送到mysql?
UPDATE
我在David Ehrmann的答案中解決了我的問題.但在我的情況下,我使用tomcat中的HexUtils將我的已排序的UUID字符串轉換為bytes []:
byte[] final_id = HexUtils.fromHexString(partial_id);
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的java uuid 排序_如何在java中将UUID保存为二进制(16)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java class 结构_Java c
- 下一篇: java web 截图_如何以Java实