Como salvar um UUID como binário (16) em java

Eu tenho uma tabela TestTable com ID de colunas como binário (16) e nome como varchar (50)

Eu tenho tentado armazenar um UUID ordenado como PK, como neste artigoArmazene o UUID de maneira otimizada

Vejo que o UUID é salvo no banco de dados como HEX (blob)

Então, eu quero salvar esse ID do java, mas estou recebendo este erro

Truncamento de dados: dados muito longos para a coluna 'ID' na linha 1

Atualmente, estou usando a biblioteca sql2o para interagir com o mysql

Então, basicamente, este é o meu código

String suuid = UUID.randomUUID().toString();
String partial_id = suuid.substring(14,18) + suuid.substring(9, 13) + suuid.substring(0, 8) + suuid.substring(19, 23) + suuid.substring(24)
String final_id = String.format("%040x", new BigInteger(1, partial_id.getBytes()));
con.createQuery("INSERT INTO TestTable(ID, Name) VALUES(:id, :name)")
        .addParameter("id", final_id)
        .addParameter("name", "test1").executeUpdate();

O ID parcial deve ser algo como isto11d8eebc58e0a7d796690800200c9a66

Eu tentei esta afirmação no mysql sem problema

insert into testtable(id, name) values(UNHEX(CONCAT(SUBSTR(uuid(), 15, 4),SUBSTR(uuid(), 10, 4),SUBSTR(uuid(), 1, 8),SUBSTR(uuid(), 20, 4),SUBSTR(uuid(), 25))), 'Test2');

Mas recebi o mesmo erro ao remover a função unhex. Então, como posso enviar o ID correto do Java para o mysql?

ATUALIZAR

Eu resolvi meu problema inspirado na resposta deDavid Ehrmann. Mas no meu caso, usei os HexUtils do tomcat para transformar minha sequência UUID classificada em bytes []:

byte[] final_id = HexUtils.fromHexString(partial_id);

questionAnswers(1)

yourAnswerToTheQuestion