Мне нужно добавить глобальный префикс для всех моих объектов базы данных, таких как таблицы и ограничения, так что, когда я извлечу схему DDL, все будет хорошо и правильно.JPA: Можно ли добавить глобальный префикс к именам ограничений?
Я знаю, как указать имена ограничений (as described here) в моем Java-коде.
Я также знаю, как добавить глобальный префикс к таблицам, as described here. Это то, что я сейчас реализовал в своем проекте.
Что я НЕ знаю, как добавить тот же самый глобальный префикс к именам ограничений. Вы видите, когда зимует создает все таблицы базы данных и ограничений, он делает такие вещи, как это:
Hibernate: alter table ABC_MYTABLE1 add constraint UK_MYTABLE1_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE1 add constraint UK_MYTABLE1_COLUMN2 unique (column2)
Hibernate: alter table ABC_MYTABLE2 add constraint UK_MYTABLE2_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE2 add constraint UK_MYTABLE2_COLUMN2 unique (column2)
...
С «ABC» быть моим глобальным префиксом. Обратите внимание на то, что имена ограничений не имеют префикса? В чем я действительно нуждаюсь:
Hibernate: alter table ABC_MYTABLE1 add constraint ABC_UK_MYTABLE1_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE1 add constraint ABC_UK_MYTABLE1_COLUMN2 unique (column2)
Hibernate: alter table ABC_MYTABLE2 add constraint ABC_UK_MYTABLE2_COLUMN1 unique (column1)
Hibernate: alter table ABC_MYTABLE2 add constraint ABC_UK_MYTABLE2_COLUMN2 unique (column2)
...
На этот раз имена таблиц и ограничений имеют префикс.
Строка префикса должна быть переменной, я не могу ее жестко закодировать, так как мне нужно настроить ее в файле конфигурации или что-то в этом роде.
Моя текущая проблема заключается в том, что классы NamingStrategy, похоже, не могут каким-либо образом модифицировать имена ограничений. Я много гугл, но все, что я нашел, это билеты на официальных сайтах Hibernate, которые могут или не могут быть связаны с этой проблемой. В любом случае, они все еще открыты для билетов.
Есть ли какие-либо решения? Я не хочу, чтобы моя схема заканчивалась половиной моих объектов/ограничений, пропускающих необходимый префикс.
Должен сказать, я нахожу его немного неряшливым из них, чтобы обеспечить механизм для изменения стратегии именования таблиц, но полностью игнорировать ограничения.
Какую версию спящего режима вы используете? – javadev
@javadev: 4.3.8. Финал – Certainly