Гибернация с существующими базами данных - PullRequest
2 голосов
/ 02 февраля 2011

Я пытаюсь построить проект Spring Roo, используя Hibernate и базу данных Oracle. База данных Oracle содержит таблицы, используемые другим приложением.

У меня есть объект Пользователь , который уже существует в базе данных, содержит тысячи пользователей и используется другим приложением.

Мой новый проект roo содержит сущность пользователя, а также некоторые другие. Файл persistence.xml настроен со следующим свойством:

<property name="hibernate.hbm2ddl.auto" value="update"/>

При первом развертывании приложения происходит сбой режима гибернации, поскольку для сущностей нет таблиц. Изменение значения на «создать» исправляет это, но стирает пользовательскую таблицу: (

Есть ли способ обойти это? То, что я хотел бы сделать, это

  1. значение свойства "create", но сущность User каким-то образом исключена
  2. Развертывание приложения, создание таблиц и т. Д. Используется существующая таблица пользователя.
  3. Остановить приложение
  4. Измените значение свойства на "update"
  5. Нет потери данных:)

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Должен быть лучший способ сделать это, но вот быстрый взлом, который заставит вас перейти с нужными вам шагами:

  1. Переименуйте таблицу в вашем отображении Hibernate на user_unused
  2. Измените значение свойства на create
  3. Разверните приложение, таблицы созданы и т. Д., Существующая таблица user не изменилась.
  4. Остановите приложение
  5. Переименуйтетаблица в вашем отображении Hibernate на user
  6. Измените значение свойства на update
  7. Удалите таблицу базы данных user_unused, которая была создана Hibernate на шаге 1
0 голосов
/ 04 февраля 2011

Я помню, что на каком-то форуме hibernate эта функция еще не доступна в hibernate.Так что вот еще один взломать.Вы можете использовать false для «create» и true для «update».Конечно, в этом случае вам необходимо настроить все классы.

...