Вопрос

Я не мог найти ссылку на то, как выключить HBM2DDL.

Это было полезно?

Решение

Просто опускание hibernate.hbm2ddl.auto по умолчанию для гибернации ничего не делать. Из справочной документации:

1.1.4. Hibernate Configuration

То hbm2ddl.auto Вариант включает автоматическую генерацию схемы базы данных непосредственно в базу данных. Это также может быть выключено, удалив вариант конфигурацииили перенаправлен в файл с помощью задачи Schemaexport Ant.

Параметр hbm2ddl.auto к none (недокументированный) может генерировать предупреждение, такое как: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none

Другие советы

Вы можете отключить его:

hibernate.hbm2ddl.auto=none

Это недокументировано, но бесценно!

Чтобы получить этот четкий, следует посмотреть источник org.hibernate.cfg.SettingsFactory (Вы можете увидеть что-то еще в зависимости от используемой версии):

String autoSchemaExport = properties.getProperty( AvailableSettings.HBM2DDL_AUTO );
if ( "validate".equals(autoSchemaExport) ) {
    settings.setAutoValidateSchema( true );
}
else if ( "update".equals(autoSchemaExport) ) {
    settings.setAutoUpdateSchema( true );
}
else if ( "create".equals(autoSchemaExport) ) {
    settings.setAutoCreateSchema( true );
}
else if ( "create-drop".equals( autoSchemaExport ) ) {
    settings.setAutoCreateSchema( true );
    settings.setAutoDropSchema( true );
}
else if ( !StringHelper.isEmpty( autoSchemaExport ) ) {
    LOG.warn( "Unrecognized value for \"hibernate.hbm2ddl.auto\": " + autoSchemaExport );
}

в org.hibernate.cfg.Settings Класс Эти переменные инициализируются как:

private boolean autoCreateSchema;
private boolean autoDropSchema;
private boolean autoUpdateSchema;
private boolean autoValidateSchema;

Так что эти по умолчанию для false.

Опущений hibernate.hbm2ddl.auto настройка должна отключить HBM2DDL_AUTO Функциональность как бы предложила hibernate.hbm2ddl.auto = none, но на последнем случае вы получаете предупреждение в журнале.

в Hibernate.Properties.

hibernate.hbm2ddl.auto=validate

Конечно, место для настройки это зависит от того, как вы настраиваете Hibernate - если оно будет программически, установить там свойство. Если это от hibernate.cfg.xml:

<property name="hibernate.hbm2ddl.auto">validate</property>

Если вы введете неподдерживаемое значение, он скажет вам, какие из них поддерживаются:o.h.b.i.SessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include 'create', 'create-drop', 'update', 'none' and 'validate'. Ignoring

И значение none По умолчанию официально поддерживается и задокументирован:https://docs.jboss.org/hibernate/orm/current/userguide/html_single/hibernate_user_guide.html#configurations-hbmddl.

Это свойство не требуется. Просто удалите hibernate.hbm2ddl.auto Вход полностью из файла XML.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top