Hibernate-reactive: Die ID vom Typ UUID kann mit MariaDB und MySQL nicht abgerufen werden

Erstellt am 19. März 2021  ·  17Kommentare  ·  Quelle: hibernate/hibernate-reactive

Die Entität befindet sich in der Datenbank, aber ein find gibt null zurück

bug

Alle 17 Kommentare

Ich denke, dies ist ein Problem mit dem Vert.x SQL-Client, aber ich muss es mit einem Test überprüfen

Ich habe das Problem gefunden.
Die Tabelle hat eine als binary(255) definierte Spalte, aber die UUID wird als binary(16) . Dies funktioniert für den anderen Dialekt, aber nicht für MySQL/MariaDB mit vert.x SQL-Client

Hrm, ja, sieht aus, das ist ein Fehler, den ich in H6 behoben habe, indem ich die defekte Standardspaltenlänge für UUIDBinaryType korrigiert habe. Ich habe es standardmäßig auf 16 eingestellt. In H5 ist die Spaltenlänge standardmäßig etwas dumm (anscheinend 255).

Ich habe ein Problem für den Vert.x SQL-Client erstellt: https://github.com/eclipse-vertx/vertx-sql-client/issues/922
Dies scheint ein Fehler zu sein, wenn man bedenkt, dass es für alle anderen Datenbanken funktioniert.

Ich denke, ein Workaround besteht im Moment darin, den Typ der Spalte zu definieren:

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

Ehrlich gesagt bin ich mir nicht sicher, ob es sich um einen Treiberfehler handelt, da ich das Gefühl habe, dass ich das gleiche Problem mit JDBC habe.

Aber ich erinnere mich vielleicht falsch.

Etwas hat mich motiviert, das Problem in H6 zu beheben.

Ich denke, ein Workaround besteht im Moment darin, den Typ der Spalte zu definieren

Ja natürlich genau.

Vielleicht kann ich den UUIDType ändern, wenn ich reaktiv verwende

Nein, da in H5 ein Typ die Spaltenlänge nicht bestimmen kann.

Dafür musste ich in H6 eine ganze Infrastruktur aufbauen. Und IIRC war es nicht so trivial.

Ehrlich gesagt bin ich mir nicht sicher, ob es sich um einen Treiberfehler handelt, da ich das Gefühl habe, dass ich das gleiche Problem mit JDBC habe.

Ich habe es getestet und es scheint zu funktionieren, wenn ich Hibernate ORM und JDBC verwende

Dafür musste ich in H6 eine ganze Infrastruktur aufbauen. Und IIRC war es nicht so trivial.

Da kann ich im Moment anscheinend nicht mehr viel machen.
Ich werde abwarten, was sie auf der Seite des Vert.x-SQL-Clients denken, und in der Zwischenzeit eine PR mit einem Testfall für die anderen DBs senden.

Ehrlich gesagt bin ich mir nicht sicher, ob es sich um einen Treiberfehler handelt, da ich das Gefühl habe, dass ich das gleiche Problem mit JDBC habe.

Ich habe es getestet und es scheint zu funktionieren, wenn ich Hibernate ORM und JDBC verwende

OK, gut, also muss ich mich falsch erinnert haben.

Ich habe einen Testfall hinzugefügt (UUIDAsBinaryType), aber ich werde dieses Problem vorerst nicht schließen: https://github.com/hibernate/hibernate-reactive/pull/680

Bin gespannt, ob das VERt.x-Team etwas dagegen unternehmen wird

OK, gut, also muss ich mich falsch erinnert haben.

Nein, du hattest recht. Ich habe es gerade noch einmal überprüft und es funktioniert weder für MySQL noch für MariaDB mit ORM und JDBC
Ich habe beim ersten Mal etwas vermasselt.

Am Ende ist es also kein Problem mit dem Treiber.

Ich frage mich, ob wir dies in der Dokumentation erwähnen sollten, bevor wir dieses Problem schließen.
Es ist nicht sehr intuitiv

Ich frage mich, ob wir dies in der Dokumentation erwähnen sollten, bevor wir dieses Problem schließen.

Sie könnten es in die FAQ aufnehmen, nehme ich an, aber das würde wirklich in die ORM-Dokumentation gehören, wenn irgendwo. Ich glaube nicht, dass wir es in den HR-Dokumenten erwähnen müssen.

Ich denke, wir sollten dieses Thema schließen.

Okay, lass es uns schließen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen