Encontré el problema mientras ejecutaba UnionSubclassInheritanceTest
con MS SQL.
HR usa ReactiveIdTableSupport
para generar SQL para crear una tabla temporal local.
MS SQL espera que los nombres de las tablas temporales locales comiencen con un solo signo de almohadilla:
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql#temporary -tables
Sí, es porque estamos usando ReactiveBulkIdStrategy
lugar de lo devuelto por AbstractTransactSQLDialect.getDefaultMultiTableBulkIdStrategy()
. Debería ser bastante fácil de arreglar. No se preocupe demasiado por esto por ahora.
@tsegismont debería ser suficiente cambiar ReactiveIdTableSupport. generateIdTableName ()
siguiente manera:
<strong i="8">@Override</strong>
public String generateIdTableName(String baseName) {
return (dialect instanceof SQLServerDialect ? "#" : "ht_") + baseName;
}
@gavinking gracias por la sugerencia. Fui con algo ligeramente diferente (para mantener el prefijo ht_
) y también tuve que cambiar el método getCreateIdTableCommand
.
Ver https://github.com/tsegismont/hibernate-reactive/commit/84caabcefb4eb1a47e7e0c2d931584038d162393
Fui con algo ligeramente diferente (para mantener el prefijo
ht_
)
Bueno, creo que si marca Hibernate ORM (con el que intentamos alinearnos), elimina el prefijo ht_
en el caso de SQL Server, porque las tablas temporales tienen su propio espacio de nombres.
@tsegismont ¿podemos cerrar este?
Compartí algunos cambios en un PR en la bifurcación de
Si estos cambios se han seleccionado aquí, entonces sí, el problema se puede cerrar.
Gracias @tsegismont ,
Gracias chicos.