Мы сталкиваемся со странным поведением гибернации, когда hbm2ddl.auto
установлено на update
.
В нашей тестовой настройке у нас есть два пользователя базы данных, один из которых содержит таблицы для нашего бета-приложения, а другой - главным образомиспользуется для разработки.Т.е. одинаковые имена таблиц у разных пользователей.Когда нужно создавать новые таблицы, мы делаем это с помощью hbm2ddl.auto=update
.
Теперь неожиданно происходит странное поведение: процесс обновления ищет существующие таблицы с неверным пользователем и создает те, которые не найдены с правильным пользователем.
Например, если существуют следующие таблицы
USER_A.TABLE_1
USER_B.TABLE_2
, и мы обновляем три настроенные таблицы: TABLE_1, TABLE_2, TABLE_3
с помощью USER_B, мы получаем
USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
TABLE_1
не создан для USER_B
.После переименования USER_A.TABLE_1
в USER_A.TABLE_0
и повторного обновления мы получим ожидаемый результат:
USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
Имеет ли это какой-либо смысл для кого-либо?Есть ли что-то вроде внутреннего кэша гибернации, напоминающего «Эй, я уже создал эту таблицу на этом сервере (и мне нет дела до пользователя)».
Мы провели довольно много тестов, чтобы убедиться, что это не так.проблема конфигурации, воспроизведенная на разных машинах, в разных конфигурациях, из ant или с использованием IDE, убедившись, что пароль USER_A не может быть найден где-либо в каталоге сборки и т. д. Таким образом, мы на 100% уверены, что поведение такое, как описано - но мыСовершенно из идей, что происходит.
Я был бы очень рад услышать ваши идеи по этому поводу, так как эта проблема уже некоторое время мучает.
Большое спасибо, Питер