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
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.