Hibernate-reactive: MS SQL: Fehler beim Erstellen einer lokalen temporären Tabelle

Erstellt am 3. Mai 2021  ·  9Kommentare  ·  Quelle: hibernate/hibernate-reactive

Habe das Problem beim Ausführen von UnionSubclassInheritanceTest mit MS SQL gefunden.

HR verwendet ReactiveIdTableSupport , um SQL zum Erstellen einer lokalen temporären Tabelle zu generieren.

MS SQL erwartet, dass lokale temporäre Tabellennamen mit einem einzelnen Hash-Zeichen beginnen:
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql#temporary -tables

bug

Alle 9 Kommentare

Ja, es liegt daran, dass wir ReactiveBulkIdStrategy anstelle des von AbstractTransactSQLDialect.getDefaultMultiTableBulkIdStrategy() Dings verwenden. Es sollte leicht zu beheben sein. Machen Sie sich jetzt keine allzu großen Sorgen.

@tsegismont es sollte ausreichen, ReactiveIdTableSupport. generateIdTableName () wie folgt zu ändern:

    <strong i="8">@Override</strong>
    public String generateIdTableName(String baseName) {
        return (dialect instanceof SQLServerDialect ?  "#" : "ht_") + baseName;
    }

@gavinking danke für den Tipp. Ich ging mit etwas etwas anderem (um das ht_ Präfix beizubehalten) und musste auch die getCreateIdTableCommand Methode ändern.

Siehe https://github.com/tsegismont/hibernate-reactive/commit/84caabcefb4eb1a47e7e0c2d931584038d162393

Ich habe etwas anderes gewählt (um das Präfix ht_ beizubehalten)

Nun, ich glaube, wenn Sie Hibernate ORM überprüfen (an dem wir versuchen auszurichten), wird das Präfix ht_ im Fall von SQL Server gelöscht, da die temporären Tabellen ihren eigenen Namespace haben.

@tsegismont können wir dieses schließen?

Ich habe einige Änderungen in einer PR an @DavideDs Fork geteilt.

Wenn diese Änderungen hier ausgewählt wurden, dann kann das Problem geschlossen werden.

Danke @tsegismont , das werde ich mir heute anschauen

Danke Leute.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen