Hãy thử lưu trữ nó dưới dạng byte:
UUID uuid = UUID.randomUUID();
byte[] uuidBytes = new byte[16];
ByteBuffer.wrap(uuidBytes)
.order(ByteOrder.BIG_ENDIAN)
.putLong(uuid.getMostSignificantBits())
.putLong(uuid.getLeastSignificantBits());
con.createQuery("INSERT INTO TestTable(ID, Name) VALUES(:id, :name)")
.addParameter("id", uuidBytes)
.addParameter("name", "test1").executeUpdate();
Giải thích một chút:bảng của bạn đang sử dụng BINARY (16), vì vậy việc tuần tự hóa UUID dưới dạng các byte thô của nó là một cách tiếp cận thực sự đơn giản. UUID về cơ bản là các int 128 bit với một vài bit dành riêng, vì vậy mã này viết nó ra dưới dạng một int lớn 128 bit. ByteBuffer chỉ là một cách dễ dàng để biến hai độ dài thành một mảng byte.
Hiện tại trong thực tế, tất cả nỗ lực chuyển đổi và sự đau đầu sẽ không xứng đáng với 20 byte bạn tiết kiệm được cho mỗi hàng.