Скажите hibernate hbm2ddl не создавать отдельную таблицу - PullRequest
3 голосов
/ 14 сентября 2010

Есть ли способ сказать hbm2ddl hibernate не создавать конкретную таблицу, но все же иметь модель, которая будет распознаваться Hibernate.

Дело в том, что модель сопоставляется с представлением, и я хочу иметьбаза данных памяти (пустая при запуске и удаленная при завершении) для тестирования, следовательно, о наличии двух наборов сопоставления не может быть и речи.

Ответы [ 3 ]

1 голос
/ 11 октября 2010

Хорошо, это не совсем отвечает на вопрос (вероятно, нет способа сделать это с текущей версией), но это решает проблему под рукой.

Итак, в конце я позволил hibernate создать таблицу, но позже принудительно отбросил ее и вставил свой собственный оператор create view. Кажется, есть два способа сделать это.

Первый способ - использование элемента <database-object>, в частности, дочернего элемента с именем <create>, например:

<class table="MY_VIEW"></class>
<database-object>
  <create>
    drop table MY_VIEW;
    create view MY_VIEW etc etc;
  </create>
</database-object>

Другой способ - ввести то же самое в import.sql. Эта вещь без документов. Я не знаю почему, возможно, это устарело. Я предполагаю, что это так, поэтому я не буду помещать здесь слишком много деталей. Это не устарело, но я нахожу предыдущий метод менее болезненным (представление create состоит из нескольких строк).

0 голосов
/ 29 декабря 2012

У меня была похожая проблема. Я пытаюсь расширить существующую схему, поэтому я хочу, чтобы только мои "новые" таблицы были созданы (удалены / изменены / и т. Д.). Я не смог найти способ сказать инструменту hbm2ddl использовать эти объекты в своей модели для проверки, но не генерировать для них SQL.

Итак, я написал простой Perl-скрипт для удаления этих операторов из сгенерированного SQL. Он предназначен для работы в конвейере сценариев оболочки, например:

cat your-sql-file.sql | scrub-schema.pl table1 table2 table3 ... > scrubbed.sql

Код доступен здесь (используется лицензия Apache v2):

https://github.com/cobbzilla/sql-tools/blob/master/scrub-schema.pl

Надеюсь, это полезно.

0 голосов
/ 14 сентября 2010

Есть ли способ указать hbm2ddl hibernate не создавать определенную таблицу

AFAIK, hbm2ddl - это "все или ничего", вы не можете исключить определенные таблицы.Но вы можете использовать его для вывода сгенерированного DDL в файл, вместо того, чтобы автоматически экспортировать его в базу данных, если вы хотите изменить DDL.Поможет ли это?

, но Hibernate все равно распознает модель.

Я не получил эту часть.Вы имеете в виду наличие Hibernate validate базы данных против сопоставления?

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