سؤال

لم أتمكن من العثور على مرجع حول كيفية إيقاف تشغيل HBM2DDL.

هل كانت مفيدة؟

المحلول

مجرد حذف hibernate.hbm2ddl.auto الافتراضات إلى السبات لا تفعل أي شيء. من الوثائق المرجعية:

1.1.4. تكوين السبات

ال hbm2ddl.auto يقوم الخيار بتشغيل التوليد التلقائي من مخططات قاعدة البيانات مباشرة في قاعدة البيانات. يمكن أيضًا إيقاف تشغيل هذا عن طريق إزالة خيار التكوينأو إعادة توجيهها إلى ملف بمساعدة مهمة النمل المخطط.

ضبط 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;

لذلك هذه الافتراضي إلى خطأ.

حذف hibernate.hbm2ddl.auto يجب أن يقوم الإعداد بإيقاف تشغيل HBM2DDL_AUTO الوظيفة كما اقترح hibernate.hbm2ddl.auto = none, ، ولكن في الحالة الأخيرة تحصل على تحذير في السجل.

في hibernate.properties

hibernate.hbm2ddl.auto=validate

بطبيعة الحال ، يعتمد المكان اللازم لتكوينه على الطريقة التي تقوم بتكوينها لإسباتك - إذا كان ذلك برمجيًا ، فقم بتعيين الخاصية هناك. إذا كان من 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