JPA2 / Hibernate - Создание схемы на лету (то есть без предварительного создания схемы вручную)? - PullRequest
1 голос
/ 02 августа 2011

Я использую JPA 2 с Hibernate Entity Manager 3.6.4. После того, как я пометил свои сущности различными аннотациями (@Entity, @MappedSuperClass и т. Д.), Я поместил в свой файл persistence.xml схему по умолчанию для использования (свойство hibernate.default_schema).

Я знаю, что можно автоматически создавать объекты, содержащиеся в схеме.
Но возможно ли автоматически создать саму схему, а затем создать содержащиеся в ней объекты?

РЕДАКТИРОВАТЬ:
Я также использую этот параметр: hibernate.hbm2ddl.auto, чтобы указать Hibernate создать схему, если она еще не существует. Не повезло, Hibernate не создает его!

Ответы [ 2 ]

3 голосов
/ 02 августа 2011

Я немного погуглил и нашел этот пост: Hibernate hbm2ddl не будет создавать схему до создания таблиц .

Тот факт, что Hibernate не создает схему перед созданием таблицы, является ошибкой . Другие базы данных страдают от этой ситуации: H2, Postgresql и т. Д.

Эту ошибку планируется исправить в выпуске 5.0.0 Hibernate.

Итак, на данный момент единственным обходным решением является создание схемы самостоятельно, либо вручную, либо с помощью средства, предлагаемого поставщиком базы данных, поскольку Hibernate не может сделать это сам: \

1 голос
/ 07 марта 2013

Мне удалось создать обходной путь, который использует поток по умолчанию hbm2ddl.

Так как он всегда вызывает операторы отбрасывания «database-object» ДО создания схемы, вы можете сделать что-то вроде этого:*

к сожалению, предложение create является обязательным и, к сожалению, оно выполняется только ПОСЛЕ создания схемы, независимо от того, в каком порядке вы разместили ее в cfg.xml, поэтому я сделал ее пустой, чтобы у вас не было ошибок при попытке создания схемы снова(он был создан вместе с drop)

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