Hibernate-reactive: Id do tipo UUID não pode ser recuperado com MariaDB e MySQL

Criado em 19 mar. 2021  ·  17Comentários  ·  Fonte: hibernate/hibernate-reactive

A entidade está no banco de dados, mas find retornará nulo

bug

Todos 17 comentários

Acho que é um problema com o cliente Vert.x SQL, mas preciso verificar com um teste

Eu encontrei o problema.
A tabela tem uma coluna definida como binary(255) mas o UUID é criado como binary(16) . Isso funciona para o outro dialeto, mas não para MySQL / MariaDB com cliente vert.x SQL

Hrm, sim, parece que este é um bug que consertei no H6, corrigindo o comprimento de coluna padrão quebrado para UUIDBinaryType . Eu o defino como 16 por padrão. Em H5, o comprimento da coluna é padronizado para algo estúpido (255 aparentemente).

Eu criei um problema para o cliente Vert.x SQL: https://github.com/eclipse-vertx/vertx-sql-client/issues/922
Isso parece um bug, considerando que funciona para todos os outros bancos de dados.

Acho que uma solução alternativa no momento é definir o tipo da coluna:

        @Column(columnDefinition = "binary(16)")
        UUID id;

Honestamente, não tenho certeza se é um bug de driver porque sinto que tive o mesmo problema com JDBC.

Mas posso estar me lembrando mal.

Algo me motivou a resolver o problema em H6.

Acho que uma solução alternativa no momento é definir o tipo da coluna

Sim, claro, exatamente.

Talvez eu possa alterar o UUIDType ao usar reativo

Não porque em H5 um tipo não pode determinar o comprimento da coluna.

Tive que construir toda uma infraestrutura para isso em H6. E IIRC não era tão trivial.

Honestamente, não tenho certeza se é um bug de driver porque sinto que tive o mesmo problema com JDBC.

Eu testei e parece funcionar quando uso o Hibernate ORM e JDBC

Tive que construir toda uma infraestrutura para isso em H6. E IIRC não era tão trivial.

Parece que não há muito mais que eu possa fazer sobre isso no momento.
Vou esperar para ver o que eles acham do lado do cliente Vert.x SQL e, enquanto isso, enviarei um PR com um caso de teste para o outro banco de dados.

Honestamente, não tenho certeza se é um bug de driver porque sinto que tive o mesmo problema com JDBC.

Eu testei e parece funcionar quando uso o Hibernate ORM e JDBC

OK, tudo bem, então devo ter me lembrado mal.

Adicionei um caso de teste (UUIDAsBinaryType), mas não vou encerrar este problema por agora: https://github.com/hibernate/hibernate-reactive/pull/680

Esperando para ver se a equipe VErt.x vai fazer algo a respeito

OK, tudo bem, então devo ter me lembrado mal.

Não, você estava certo. Acabei de verificar e não funciona para MySQL nem MariaDB com ORM e JDBC
Eu errei em algum lugar quando verifiquei pela primeira vez.

Então, no final das contas não é um problema para o motorista.

Gostaria de saber se devemos mencionar isso na documentação antes de encerrar este problema.
Não é muito intuitivo

Gostaria de saber se devemos mencionar isso na documentação antes de encerrar este problema.

Você poderia colocá-lo no FAQ, suponho, mas na verdade ele pertenceria à documentação do ORM, se em algum lugar. Não acho que precisamos mencionar isso nos documentos de RH.

Acho que devemos encerrar este problema.

Ok vamos fechar

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

tsegismont picture tsegismont  ·  9Comentários

Sanne picture Sanne  ·  12Comentários

DavideD picture DavideD  ·  37Comentários

markusdlugi picture markusdlugi  ·  30Comentários

gavinking picture gavinking  ·  6Comentários