2014-09-29 3 views
1

Я пытаюсь разработать систему, которая обращается к схеме, которая управляется и обновляется другой системой, поэтому схема базы данных может изменяться независимо от моей системы. Вряд ли это будут новые таблицы или столбцы, добавляющие новые столбцы.Grails 2.4.3: Управление изменяющейся схемой

Есть ли способ автоматического обновления моих классов домена всякий раз, когда столбцы добавляются в схему, в идеале, путем вызова веб-службы, а затем эта веб-служба обновляет классы домена? Даже если это одна команда CLI, было бы лучше, чем выполнять ручные изменения кода. Я знаю, что вы можете авто-scaffold (строить представления и контроллеры), но все равно, чтобы изучить схему и искать новые столбцы, а затем добавить новые свойства в класс домена?

Я взглянули на различных плагинов и страниц, в том числе db-reverse-engineer (не совместимый с 2.4.3), database-migration (кажется, более быть для обновления базы данных после изменения класса домена) и dynamic-domain-class (кажется, создает совершенно новый классы домена, а не просто свойства обновления).

В настоящий момент я могу думать только об этом, чтобы запустить собственный SQL-код, чтобы сам проверить схему, отменить имена столбцов, типы и ограничения, а затем использовать плагин динамического домена для создания моего собственные классы домена «на лету». Но это кажется беспорядочным.

Я хочу по существу знать имена классов домена, но имею систему, которая является агностикой класса домена, так что я могу динамически строить gui на основе свойств классов домена (авто-леса) во время выполнения.

Спасибо за любые идеи/указатели заранее.

ответ

0

Чувак, едва ли думаю. поместите код, который может отслеживать изменения на удаленной стороне, и обязательно, чтобы эта запись была сохранена или отправлена ​​в приложение grails в определенный момент времени, который является стабильным или каким-то временным. Вы могли бы использовать как для мониторинга удаленной базы данных, так и для создания отчета журналов изменений на удаленном компьютере, а затем можете попытаться написать сценарий

1.Чтобы обновить ваши модели домена соответственно, например, если последнее поле добавлено на клиентов Таблица

2.Тогда хороший совет, который я могу дать, это динамически выполнять скрипт журнала изменений после внесения изменений в ваш домен, используя какой-то сценарий, моментальные снимки базы данных или какую-то синхронизацию, чтобы лучше работать с AUTOSCAFFOLDING.

Просто идея. , ,

+0

Это еще один подход. У меня действительно нет доступа к удаленной стороне как таковой, только к соединению с базой данных, но я могу написать собственный скрипт, который можно запустить для создания журнала изменений, а затем запустить сценарий миграции базы данных.Я просто надеялся на программный способ сделать это, а не на командную строку. Это более проверяемо. И я дудлет;) – lilalfyalien

+0

okay then ... будет обновлять мой ответ – danielad

+0

Вы обнаружите, что получаете больше голосов и принимаете ответы, если избегаете оскорбительных фраз типа «просто не мыслите». Аналогичным образом, избегайте ЖЕНЩИНЫ НА ЛЮДЯХ С ВСЕМИ КАПСАМИ. Я не задавал этот вопрос, но как только я увидел «Чувак», я сразу же предположил, что это будет низкий ответ. Оскорблять людей меньше, и они воспримут вас всерьез. –

0

Как раз об обратном инженерном плагине, вы все равно можете запустить его с помощью grails 2.4.3. Проблема заключается в зависимости от Hibernate 4, поскольку API-интерфейс Hibernate изменился.

Если вы хотите продолжать использовать этот плагин, вы можете вернуться в спящий режим 3, комментируя следующую строку:

runtime ":hibernate4:4.X.X.X" 

и добавляя этот вместо:

runtime ":hibernate:3.6.10.17" 

Тогда он будет работать отлично. Я все еще планирую обновить этот очень полезный плагин ... но это займет некоторое время:/

+0

Я попытался это сделать, но затем я получил целую кучу ошибок из-за взаимозависимостей с другими плагинами (в основном, с моей настройкой SQL SQLSource). Я могу попробовать еще раз. – lilalfyalien

+0

Это странный плагин, потому что он не тот, где он всегда активен, как плагин безопасности, или ресурсы и т. Д. Обычно вы запускаете его несколько раз, и все готово. Поэтому после этого нет оснований для установки. Если он не работает в версии Grails, которую вы используете, установите ее в версию, где она работает, и используйте это приложение для выполнения обратной инженерной работы. Скопируйте сгенерированный код в свое реальное приложение и наслаждайтесь остальной частью дня. –

+0

Я получаю этот прецедент. Я хотел бы в идеале иметь возможность называть его программно «на лету», а не полагаться на ручное вмешательство каждый раз, когда схема изменяется незначительно. – lilalfyalien

Смежные вопросы