Prøv at gemme det som bytes:
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();
Lidt af en forklaring:din tabel bruger BINARY(16), så serialisering af UUID som dens rå bytes er en virkelig ligetil tilgang. UUID'er er i det væsentlige 128-bit ints med et par reserverede bits, så denne kode skriver det ud som en big-endian 128-bit int. ByteBufferen er bare en nem måde at omdanne to longs til en byte-array.
Nu i praksis vil al konverteringsindsats og hovedpine ikke være de 20 bytes værd, du sparer pr. række.