Försök att lagra det som 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();
Lite av en förklaring:din tabell använder BINARY(16), så att serialisera UUID som dess råa bytes är ett väldigt enkelt tillvägagångssätt. UUID är i huvudsak 128-bitars ints med några reserverade bitar, så den här koden skriver ut det som en big-endian 128-bitars int. ByteBuffer är bara ett enkelt sätt att förvandla två longs till en byte-array.
Nu i praktiken kommer all konvertering och huvudvärk inte att vara värda de 20 byte du sparar per rad.