2010-10-14 2 views
0

У меня возникла некоторая проблема в заказе выполнения sql.Maven SQL плагин выполнение заказа

У нас есть один файл сценария sql для каждой таблицы в одном каталоге. Пример: В каталоге c: \ SqlScripts есть user.sql и role.sql. Мы используем плагин sql maven для выполнения этих sql-файлов.

Таблица ролей имеет ключ Foriegn к таблице пользователя, и выполнение не выполняется, поскольку плагин пытается выполнить role.sql перед user.sql. Я не могу использовать атрибут orderfile, поскольку мы указываем как c: \ SqlScripts * .sql.

Как решить эту проблему?

Я вижу 2 решения:

  1. Объединить все скрипты в один файл в порядке создания, скрипт для создания роли приходит после того, как скрипт для создания пользователя.

  2. Удалите * подстановочный знак и укажите каждый файл в атрибуте в порядке выполнения.

  3. Введите имя файла в соответствии с порядком исполнения ex: 1_user.sql, 2_role.sql и используйте атрибут «возрастающего» порядка (не уверен, что это будет работать, поскольку порядок может не применяться)

Нет более элегантных решений?

+1

Как вы выглядите как POM для конфигурации плагина sql? – khmarbaise

+0

Вы должны определить файлы через srcFiles, которые будут выполнять файлы в том порядке, в котором они были определены. – khmarbaise

+0

Yup, но, к сожалению, не принимает подстановочные знаки :(Зная любые обходные методы? – Julia

ответ

0

Я не могу использовать атрибут orderfile, поскольку мы указываем как c: \ SqlScripts * .sql.

Очевидно, что это будет работать только в том случае, если у вас нет строгого порядка. Если вы ...

Как решить эту проблему?

... используйте установку, которая позволяет детерминировать обработку заказа.

Я вижу 3 решения (...). Какие-нибудь более элегантные решения?

Я думаю, вы прибиты гвоздями. Мое предпочтение относится к варианту 3.

+0

Я считаю, что лучшим вариантом является использование с заказом, в котором я хочу выполнить, но, к сожалению, как упоминалось выше, он не принимает подстановочные знаки. – Julia

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