64 votes

Comment désactiver hbm2ddl?

Je n'ai pas trouvé de référence sur la façon de désactiver hbm2ddl.

84voto

Pascal Thivent Points 295221

Juste en omettant hibernate.hbm2ddl.auto valeurs par défaut de la mise en veille prolongée ne rien faire. À partir de la documentation de référence:

1.1.4. Hibernate

L' hbm2ddl.auto option active génération automatique de la base de données les schémas directement dans la base de données. Cela peut également être activée ou désactivée par la suppression de l'option de configuration, ou redirigé vers un fichier à l'aide de la SchemaExport tâche Ant.

Il semble également possible de définir des hbm2ddl.auto de none (ce qui est sans-papiers). Pas testé si.

40voto

Julien BRENELIERE Points 128

Vous pouvez l'éteindre en:

 hibernate.hbm2ddl.auto=none
 

C'est sans papiers mais sans prix!

12voto

Pour obtenir cela, l'un clair, l'on doit chercher dans la source de l' org.hibernate.cfg.SettingsFactory (vous pourriez voir quelque chose d'autre en fonction de la version utilisée):

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 );
}

Dans l' org.hibernate.cfg.Settings classe ces variables sont initialisées comme:

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

de sorte que ces faux par défaut.

L'omission de la hibernate.hbm2ddl.auto réglage doit éteindre l' HBM2DDL_AUTO fonctionnalités comme l'aurait suggéré hibernate.hbm2ddl.auto = none, mais sur le dernier cas, vous obtenez un avertissement dans le journal.

5voto

Bozho Points 273663

dans hibernate.properties

 hibernate.hbm2ddl.auto=validate
 

Bien sûr, l'emplacement pour le configurer dépend de la façon dont vous configurez votre veille prolongée - si c'est programmé, définissez la propriété à cet endroit. S'il s'agit de hibernate.cfg.xml:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X