Как избежать автоматических изменений схемы при работе с устаревшими базами данных с использованием Grails? - PullRequest
4 голосов
/ 31 декабря 2010

Grails выполняет автоматические изменения схемы (включая обновления индекса / внешнего ключа) при изменении модели домена.Обычно это нормально, но при работе с устаревшими базами данных я хотел бы полностью отключить все модификации таблиц.

Как мне указать Grails никогда изменять структуру таблицы (включая индексыи ограничения внешнего ключа)?

Вот как я сейчас настроил отображение:

class ClassName {
  String string1
  String string2
  AnotherClass anotherClass

  static mapping = {
    version(false)
    table("legacy_table")
    string1(column: "some_legacy_field_1")
    string2(column: "some_legacy_field_2")
    anotherClass(column: "another_class_id", nullable: true, ignoreNotFound: true)
  }
}

Ответы [ 2 ]

9 голосов
/ 31 декабря 2010

dataSource, определенное в /grails-app/conf/DataSource.groovy, имеет свойство dbCreate, которое можно установить на validate, чтобы проверить, что схема соответствует модели домена, не изменяя ее каким-либо образом.

ПодробнееПодробности здесь: http://grails.org/doc/latest/guide/3.%20Configuration.html#3.3%20The%20DataSource

2 голосов
/ 09 января 2011

Как упоминалось ранее, свойство dbCreate - это то, которое вы используете, чтобы указать, как база данных будет изменяться каждый раз, когда в классах домена происходят изменения.Я бы предложил полностью удалить это свойство, как предложил Берт, поэтому Hibernate не контролирует, как обновляется база данных, поскольку это может вызвать определенные конфликты в зависимости от изменений, которые вы вносите в классы вашего домена.

Способ управления изменениями базы данных в нашем проекте заключается в использовании миграции базы данных, я рекомендую использовать Liquibase , есть плагин для Grails, который отлично работает, он прост в использовании ипредлагают большую гибкость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...