Выборочное отключение автоматического обновления таблицы (dbCreate = «none») на уровне класса домена / таблицы в Grails?

#grails #grails-orm

#grails #grails-orm

Вопрос:

В Grails возможно ли отключить автоматическое создание / обновление таблицы только для одного класса домена?

Допустим, у меня есть классы домена Foo , Bar и Zonk . Я хочу автоматическое обновление таблицы для Foo и Bar , тогда как я не хочу, чтобы в Zonk таблицу вообще вносились автоматические изменения.

Возможно ли это?

Зачем нужно выборочно отключать обновления таблицы? Одним из таких случаев является то, что лежащая в основе таблица Zonk содержит миллионы строк, так что на выполнение любого изменения, внесенного в эту таблицу (например, добавление ссылки на внешний ключ), потребуется несколько дней.

Ответ №1:

Прямой поддержки нет, но вы могли бы взломать исправление. Но вы действительно даже не хотите автоматического обновления для «безопасных» таблиц. Несколько примеров — если вы переименуете столбец или таблицу, это добавит новый, но не удалит старый. Если вы добавите новый столбец, который не должен допускать значения null, он будет добавлен как nullable, поскольку в противном случае старые строки будут недействительны. И если вы расширите столбец, он не будет обновлен, даже если потери данных не будет.

Вам было бы намного лучше использовать миграции базы данных, и Liquibase — лучший вариант в настоящее время. Плагин миграции базы данных является официальным плагином миграции для Grails и использует Liqibase.