Hibernate-reactive: MS SQL : échec lors de la création d'une table temporaire locale

Créé le 3 mai 2021  ·  9Commentaires  ·  Source: hibernate/hibernate-reactive

J'ai trouvé le problème lors de l'exécution de UnionSubclassInheritanceTest avec MS SQL.

HR utilise ReactiveIdTableSupport pour générer du SQL afin de créer une table temporaire locale.

MS SQL s'attend à ce que les noms de tables temporaires locales commencent par un seul signe dièse :
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql#temporary -tables

bug

Tous les 9 commentaires

Oui, c'est parce que nous utilisons ReactiveBulkIdStrategy au lieu de la chose renvoyée par AbstractTransactSQLDialect.getDefaultMultiTableBulkIdStrategy() . Cela devrait être assez facile à réparer. Ne vous inquiétez pas trop à ce sujet pour l'instant.

@tsegismont il devrait suffire de changer ReactiveIdTableSupport. generateIdTableName () comme suit :

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

@gavinking merci pour le conseil. J'ai opté pour quelque chose de légèrement différent (pour conserver le préfixe ht_ ) et j'ai également dû changer la méthode getCreateIdTableCommand .

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

J'ai opté pour quelque chose de légèrement différent (pour garder le préfixe ht_ )

Eh bien, je pense que si vous cochez Hibernate ORM (avec lequel nous essayons de nous aligner), il supprime le préfixe ht_ dans le cas de SQL Server, car les tables temporaires ont leur propre espace de noms.

@tsegismont peut-on fermer celui-ci ?

J'ai partagé quelques modifications dans un PR au fork de

Si ces modifications ont été sélectionnées ici, alors oui, le problème peut être clos.

Merci @tsegismont , je vais regarder ça aujourd'hui

Merci les gars.

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