Tente armazená-lo como 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();
Uma pequena explicação:sua tabela está usando BINARY(16), então serializar UUID como seus bytes brutos é uma abordagem realmente direta. UUIDs são essencialmente ints de 128 bits com alguns bits reservados, então esse código escreve como um int big-endian de 128 bits. O ByteBuffer é apenas uma maneira fácil de transformar dois longos em uma matriz de bytes.
Agora, na prática, todo o esforço de conversão e dores de cabeça não valerão os 20 bytes que você economiza por linha.