![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 3 Всего: 24 |
Есть набор классов, которые через JPA мапятся на базу. Если с созданием таблиц проблем нет, то вот с изменением имеющихся существуют определенные сложности. За это отвечает параметр:
hbm2ddl.auto Значения create и create-drop не подходят, так как в базе есть данные. При значении update он делает далеко не все возможные изменения, например не меняет тип столбца и не удаляет столбцы, даже если таблица пустая. Вроде проблема стандартная, но стандартного решения я для нее не нашел. Пока есть только идея убивать все пустые таблицы перед подключением и использовать значение update, что во многом бы решило бы проблему, но как то это криво, приделывать такие костыли. Кто уже сталкивался с таким и что придумал? -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
Да, проблема стара как мир
Тоже сталкивался и тоже решения не нашёл. Потом прикинул, что в принципе решение и вряд ли найдётся. Например была таблица Car с полями id, brand,color. Ты, допустим добавил поле productionDate и сделал его not null. Как в таком случае hibernate должен поступить со старыми записями с базе ? Решил юзать hibernate.hbm2ddl.auto=update, и дропать базу, в случае, если хибер не может обновить схемы. Предварительно делаю дамп, затем "в ручную" создаю нужные таблицы Тоже интересно послушать кто как эту проблему решил. |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
Ручками можно базу поправить... ALTER никто не отменял.
-------------------- Таково моё общее мнение. |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 3 Всего: 24 |
В идеале хотелось бы, чтобы изменял когда можно (сейчас это делает не всегда), а когда бы что то не получалось - кидал бы исключение. Вот это было бы просто идеально С этим проблемы когда много людей над проектом работает. Приходится каждому девелоперу, при каждом измиенении существующих классов рассылать всем другим письма, чтобы те выполнили скрипт, кто то наверняка почту не проверит при том... Короче проблемно это -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 3 Всего: 48 |
Использовать системы миграции типа LiquiBase (Правда признаюсь честно что вместе с хибом не пробовал такое использовать, в питоне использовал south - отличная штука)
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |