日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java uuid 排序_如何在java中将UUID保存为二进制(16)

發布時間:2024/9/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。