Spróbuj zapisać go 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();
Trochę wyjaśnienia:twoja tabela używa BINARY(16), więc serializacja UUID jako jego surowych bajtów jest naprawdę prostym podejściem. UUID są zasadniczo 128-bitowymi intami z kilkoma zarezerwowanymi bitami, więc ten kod zapisuje je jako big-endian 128-bit int. ByteBuffer to prosty sposób na przekształcenie dwóch długich w tablicę bajtów.
Teraz w praktyce cały wysiłek związany z konwersją i bóle głowy nie będą warte 20 bajtów zaoszczędzonych na wiersz.