#grails #grails-orm
#grails #grails-orm
Вопрос:
В Grails возможно ли отключить автоматическое создание / обновление таблицы только для одного класса домена?
Допустим, у меня есть классы домена Foo
, Bar
и Zonk
. Я хочу автоматическое обновление таблицы для Foo
и Bar
, тогда как я не хочу, чтобы в Zonk
таблицу вообще вносились автоматические изменения.
Возможно ли это?
Зачем нужно выборочно отключать обновления таблицы? Одним из таких случаев является то, что лежащая в основе таблица Zonk
содержит миллионы строк, так что на выполнение любого изменения, внесенного в эту таблицу (например, добавление ссылки на внешний ключ), потребуется несколько дней.
Ответ №1:
Прямой поддержки нет, но вы могли бы взломать исправление. Но вы действительно даже не хотите автоматического обновления для «безопасных» таблиц. Несколько примеров — если вы переименуете столбец или таблицу, это добавит новый, но не удалит старый. Если вы добавите новый столбец, который не должен допускать значения null, он будет добавлен как nullable, поскольку в противном случае старые строки будут недействительны. И если вы расширите столбец, он не будет обновлен, даже если потери данных не будет.
Вам было бы намного лучше использовать миграции базы данных, и Liquibase — лучший вариант в настоящее время. Плагин миграции базы данных является официальным плагином миграции для Grails и использует Liqibase.