バイトとして保存してみてください:
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();
少し説明します。テーブルはBINARY(16)を使用しているため、UUIDを生のバイトとしてシリアル化するのは非常に簡単な方法です。 UUIDは基本的に128ビット整数であり、いくつかの予約ビットがあるため、このコードはそれをビッグエンディアンの128ビット整数として書き出します。 ByteBufferは、2つのlongをバイト配列に変換する簡単な方法です。
現在、実際には、すべての変換作業と頭痛の種は、1行あたり20バイト節約する価値はありません。