Обнаружил проблему при запуске UnionSubclassInheritanceTest
с MS SQL.
HR использует ReactiveIdTableSupport
для генерации SQL для создания локальной временной таблицы.
MS SQL ожидает, что имена локальных временных таблиц будут начинаться с одного знака решетки:
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql# Contemporary -tables
Да, потому что мы используем ReactiveBulkIdStrategy
вместо того, что возвращает AbstractTransactSQLDialect.getDefaultMultiTableBulkIdStrategy()
. Это должно быть достаточно легко исправить. Не беспокойтесь об этом сейчас.
@tsegismont должно быть достаточно изменить ReactiveIdTableSupport. generateIdTableName ()
следующим образом:
<strong i="8">@Override</strong>
public String generateIdTableName(String baseName) {
return (dialect instanceof SQLServerDialect ? "#" : "ht_") + baseName;
}
@gavinking спасибо за подсказку. Я выбрал что-то немного другое (чтобы сохранить префикс ht_
), а также пришлось изменить метод getCreateIdTableCommand
.
См. Https://github.com/tsegismont/hibernate-reactive/commit/84caabcefb4eb1a47e7e0c2d931584038d162393
Я выбрал что-то немного другое (чтобы сохранить префикс
ht_
)
Что ж, я считаю, что если вы проверите Hibernate ORM (который мы пытаемся согласовать), он удалит префикс ht_
в случае SQL Server, потому что временные таблицы имеют собственное пространство имен.
@tsegismont мы можем закрыть это?
Я поделился некоторыми изменениями в PR форка @DavideD .
Если эти изменения были тщательно отобраны здесь, то да, проблема может быть закрыта.
Спасибо @tsegismont , я посмотрю на это сегодня
Спасибо ребята.