Запуск создания аннотации инструмента гибернации без атрибута «каталог» - PullRequest
7 голосов
/ 02 августа 2009

когда я запускаю свои инструменты гибернации он читает из БД и создает Java-классы для каждой таблицы, и Java-класс для составных первичных ключей. это здорово.

проблема в этой строке

@Table(name="tst_feature"
    ,catalog="tstdb"
)

пока имя таблицы является обязательным, атрибут «catalog» не требуется. иногда я хочу использовать "tstdb", иногда я хочу использовать "tstdev"

я думал, какой БД был выбран, зависит от URL-адреса соединения JDBC но когда я изменяю URL-адрес jdbc, чтобы он указывал на "tstdev", он все еще использует "tstdb"

так, я знаю, что должно быть сделано, просто не знаю как это делается мои варианты

  • подавить генерацию атрибута "catalog" в настоящее время я делаю это вручную (не очень продуктивно) или я мог бы написать программу, которая анализирует файл Java и удалить атрибут вручную но я надеюсь, что мне не нужно

OR

  • найти способ указать hibernate игнорировать атрибут "catalog" и использовать схему, которая явно указана. я не знаю точных настроек, которые мне нужно изменить, чтобы добиться этого, или даже если опция доступна.

Ответы [ 3 ]

7 голосов
/ 31 декабря 2009

Вам необходимо выполнить 3 шага -

1) В поле hibernate.cfg.xml добавьте это свойство

hibernate.default_catalog = MyDatabaseName

(как указано в сообщении выше)

2) В hibernate.reveng.xml добавьте все фильтры таблиц, как это

table-filter match-name="MyTableName"

(только это, здесь нет названия каталога)

3) Восстановить код гибернации

Вы не увидите имя каталога ни в одном из файлов *.hbm.xml.

Я использовал Eclipse Galileo и Hibernate-3.2.4.GA.

1 голос
/ 02 августа 2009

Существует настройка для поколения, которая скажет, какие таблицы поместить в какой каталог.

Вы можете указать каталог вручную (в файле мести, элемент <table>) или программно (в вашем пользовательском классе ReverseEngineeringStrategy, если я хорошо помню).

Кроме того, мне недавно пришлось изменить шаблоны генерации.

См. Справочную документацию:

Извините, это может быть более точным, но сейчас у меня нет доступа к моему рабочему компьютеру.

0 голосов
/ 06 мая 2010

Каталог атрибутов является атрибутом «подключения» и должен указываться в файле конфигурации «подключения» hibernate.cfg.xml, а НЕ в файле конфигурации «данных» *.hbm.xml.

Я генерирую код гибернации с помощью муравьиной задачи <hibernatetool> и ставлю эту задачу замены после регенерации (замените имя схемы на вашу базу данных).

<replace dir='../src' token='catalog="schema-name"' value=''>

Итак, после генерации каталог атрибутов был удален.

Это обходной путь, но сгенерированный код работает в моей среде разработки с другим именем схемы.

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