Versuchen Sie es als Bytes zu speichern:
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();
Eine kleine Erklärung:Ihre Tabelle verwendet BINARY (16), daher ist das Serialisieren von UUID als Rohbytes ein wirklich einfacher Ansatz. UUIDs sind im Wesentlichen 128-Bit-Ints mit einigen reservierten Bits, daher schreibt dieser Code sie als Big-Endian-128-Bit-Ints aus. Der ByteBuffer ist nur eine einfache Möglichkeit, zwei Longs in ein Byte-Array umzuwandeln.
In der Praxis sind der ganze Konvertierungsaufwand und die Kopfschmerzen die 20 Bytes, die Sie pro Zeile sparen, nicht wert.