Zkuste to uložit jako bajty:
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();
Trochu vysvětlení:vaše tabulka používá BINARY(16), takže serializace UUID jako jeho nezpracovaných bajtů je opravdu přímočarý přístup. UUID jsou v podstatě 128bitové int s několika vyhrazenými bity, takže tento kód jej zapíše jako big-endian 128bitový int. ByteBuffer je jen snadný způsob, jak proměnit dvě longs na bajtové pole.
Nyní v praxi nebude veškeré úsilí o převod a bolesti hlavy stát za těch 20 bajtů, které ušetříte na řádek.