Hibernate-reactive: L'ID de type UUID ne peut pas être récupéré avec MariaDB et MySQL

Créé le 19 mars 2021  ·  17Commentaires  ·  Source: hibernate/hibernate-reactive

L'entité est dans la base de données mais un find renverra null

bug

Tous les 17 commentaires

Je pense que c'est un problème avec le client SQL Vert.x mais je dois vérifier avec un test

J'ai trouvé le problème.
La table a une colonne définie comme binary(255) mais l'UUID est créé comme binary(16) . Cela fonctionne pour l'autre dialecte mais pas pour MySQL/MariaDB avec le client SQL vert.x

Hrm, ouais, il semble que c'est un bogue que j'ai corrigé dans H6, en corrigeant la longueur de colonne par défaut cassée pour UUIDBinaryType . Je l'ai mis à 16 par défaut. Dans H5, la longueur de la colonne par défaut est quelque chose de stupide (255 apparemment).

J'ai créé un problème pour le client SQL Vert.x : https://github.com/eclipse-vertx/vertx-sql-client/issues/922
Cela semble être un bogue étant donné que cela fonctionne pour toutes les autres bases de données.

Je suppose qu'une solution de contournement pour le moment consiste à définir le type de la colonne :

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

Honnêtement, je ne sais pas s'il s'agit d'un bogue de pilote car j'ai l'impression d'avoir rencontré le même problème avec JDBC.

Mais je me souviens peut-être mal.

Quelque chose m'a motivé à aller résoudre le problème dans H6.

Je suppose qu'une solution de contournement pour le moment consiste à définir le type de la colonne

Oui, bien sûr, exactement.

Peut-être que je peux changer le UUIDType lors de l'utilisation de réactif

Non car dans H5 un type ne peut pas déterminer la longueur de la colonne.

J'ai dû construire toute une infrastructure pour ça en H6. Et IIRC ce n'était pas si anodin.

Honnêtement, je ne sais pas s'il s'agit d'un bogue de pilote car j'ai l'impression d'avoir rencontré le même problème avec JDBC.

Je l'ai testé et cela semble fonctionner lorsque j'utilise Hibernate ORM et JDBC

J'ai dû construire toute une infrastructure pour ça en H6. Et IIRC ce n'était pas si anodin.

Il semble que je ne puisse pas faire grand-chose de plus à ce sujet pour le moment.
J'attendrai de voir ce qu'ils en pensent côté client Vert.x SQL et, en attendant, enverrai un PR avec un cas de test pour les autres dbs.

Honnêtement, je ne sais pas s'il s'agit d'un bogue de pilote car j'ai l'impression d'avoir rencontré le même problème avec JDBC.

Je l'ai testé et cela semble fonctionner lorsque j'utilise Hibernate ORM et JDBC

OK, très bien, donc j'ai dû mal me souvenir.

J'ai ajouté un cas de test (UUIDAsBinaryType) mais je ne vais pas fermer ce problème pour le moment : https://github.com/hibernate/hibernate-reactive/pull/680

J'attends de voir si l'équipe VERt.x va faire quelque chose à ce sujet

OK, très bien, donc j'ai dû mal me souvenir.

Non, tu avais raison. Je viens de vérifier et cela ne fonctionne pas pour MySQL ni MariaDB avec ORM et JDBC
J'ai foiré quelque part quand j'ai vérifié la première fois.

Donc, au final, ce n'est pas un problème avec le pilote.

Je me demande si nous devrions le mentionner dans la documentation avant de clore ce problème.
c'est pas très intuitif

Je me demande si nous devrions le mentionner dans la documentation avant de clore ce problème.

Vous pourriez le mettre dans la FAQ, je suppose, mais en réalité, cela appartiendrait à la documentation ORM, le cas échéant. Je ne pense pas que nous ayons besoin de le mentionner dans les documents RH.

Je pense que nous devrions clore ce sujet.

OK, fermons-le

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

pqab picture pqab  ·  21Commentaires

yaakov-berkovitch picture yaakov-berkovitch  ·  16Commentaires

tsegismont picture tsegismont  ·  9Commentaires

gavinking picture gavinking  ·  6Commentaires

gavinking picture gavinking  ·  16Commentaires