HIbernate не создает таблицу, которая уже существует в другой базе данных - PullRequest
0 голосов
/ 26 июня 2019

У меня есть объект EJB с именем com.test.Student, который сопоставлен с таблицей с именем "student" в базе данных посещаемости с использованием xml.Таблица «ученик» в базе данных посещаемости еще не существует.

Hibernate не создает таблицу «ученик» в базе данных посещаемости при запуске приложения, даже если для свойства hibernate.hbm2dll.auto установлено значение «обновление».Он также не генерирует никаких исключений, предупреждений или запросов.Он просто ничего не делает.

После некоторого тестирования я понял, что таблица ученика уже существует в некоторой другой базе данных с именем "sms".Если я сопоставлю com.test.Student @Entity с другим именем таблицы (которое не существует ни в одной базе данных), Hibernate прекрасно создаст его с помощью этой конфигурации.

Почему Hibernate не создает таблицу «student» всопоставленная база данных?Помешает ли существование другой таблицы с таким же именем в другой базе данных каким-либо образом?

Некоторая информация:

  • Hibernate ver: 4.3.9
  • Spring ver: 4.3.9
  • MySQL как DB
  • Java 8
  • NetBeans asIDE

1 Ответ

0 голосов
/ 08 июля 2019

Как упоминалось в разделе комментариев, если hibernate не создает таблицы в ddl auto из-за конфликтов имен таблиц между схемами, вы должны явно объявить:

@Table(name="attendance.student")

Таким образом, hibernate создаст таблицу правильно.Если там явно не объявлена ​​схема, она будет искать другие таблицы с таким же именем публично, и, следовательно, не будет создавать новую.

Взгляните на это описание ошибки .Если вы хотите узнать больше информации о том, как hibernate ведет себя при создании новых таблиц, вам определенно следует создать еще одну публикацию с более кратким сценарием, чтобы мы могли обсудить ее дальше.

...