Hibernate-reactive: MS SQL: сбой при создании локальной временной таблицы

Созданный на 3 мая 2021  ·  9Комментарии  ·  Источник: hibernate/hibernate-reactive

Обнаружил проблему при запуске UnionSubclassInheritanceTest с MS SQL.

HR использует ReactiveIdTableSupport для генерации SQL для создания локальной временной таблицы.

MS SQL ожидает, что имена локальных временных таблиц будут начинаться с одного знака решетки:
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql# Contemporary -tables

Все 9 Комментарий

Да, потому что мы используем 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 , я посмотрю на это сегодня

Спасибо ребята.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги